in pkg/validate/validate_component.go [43:82]
func Component(c *bundle.Component) field.ErrorList {
errs := field.ErrorList{}
pi := field.NewPath("Component")
n := c.Spec.ComponentName
if n == "" {
errs = append(errs, field.Required(pi.Child("Spec", "ComponentName"), "components must have ComponentName"))
}
ver := c.Spec.Version
if ver == "" {
errs = append(errs, field.Required(pi.Child("Spec", "Version"), "components must have a Version"))
}
if n == "" || ver == "" {
// Subsequent validation relies on components having a unique name+version pair.
return errs
}
p := cPath(c.ComponentReference())
if nameErrs := validateName(p.Child("Spec", "ComponentName"), n); len(errs) > 0 {
errs = append(errs, nameErrs...)
}
api := c.APIVersion
if !apiVersionPattern.MatchString(api) {
errs = append(errs, field.Invalid(p.Child("APIVersion"), api, "must have the form \"bundle.gke.io/<version>\""))
}
expType := "Component"
if k := c.Kind; k != expType {
errs = append(errs, field.Invalid(p.Child("Kind"), k, "kind must be Component"))
}
if _, err := semver.Parse(ver); err != nil {
errs = append(errs, field.Invalid(p.Child("Spec", "Version"), ver, fmt.Sprintf("must be a SemVer version: %v", err)))
}
return errs
}