(ctx *ValidationContext, obj *model.Package)
| 293 | } |
| 294 | |
| 295 | func validatePackageField(ctx *ValidationContext, obj *model.Package) *ValidationResult { |
| 296 | result := &ValidationResult{Valid: true, Issues: []ValidationIssue{}} |
| 297 | |
| 298 | // Validate identifier has no spaces |
| 299 | if !HasNoSpaces(obj.Identifier) { |
| 300 | issue := NewValidationIssueFromError( |
| 301 | ValidationIssueTypeSemantic, |
| 302 | ctx.Field("identifier").String(), |
| 303 | ErrPackageNameHasSpaces, |
| 304 | "package-name-has-spaces", |
| 305 | ) |
| 306 | result.AddIssue(issue) |
| 307 | } |
| 308 | |
| 309 | // Validate version string |
| 310 | versionResult := validateVersion(ctx.Field("version"), obj.Version) |
| 311 | result.Merge(versionResult) |
| 312 | |
| 313 | // Validate runtime arguments |
| 314 | for i, arg := range obj.RuntimeArguments { |
| 315 | argResult := validateArgument(ctx.Field("runtimeArguments").Index(i), &arg) |
| 316 | result.Merge(argResult) |
| 317 | } |
| 318 | |
| 319 | // Validate package arguments |
| 320 | for i, arg := range obj.PackageArguments { |
| 321 | argResult := validateArgument(ctx.Field("packageArguments").Index(i), &arg) |
| 322 | result.Merge(argResult) |
| 323 | } |
| 324 | |
| 325 | // Validate transport with template variable support |
| 326 | availableVariables := collectAvailableVariables(obj) |
| 327 | transportResult := validatePackageTransport(ctx.Field("transport"), &obj.Transport, availableVariables) |
| 328 | result.Merge(transportResult) |
| 329 | |
| 330 | return result |
| 331 | } |
| 332 | |
| 333 | // validateVersion validates the version string. |
| 334 | // NB: we decided that we would not enforce strict semver for version strings |
no test coverage detected
searching dependent graphs…