in script/validator/validator.go [190:232]
func verifyInvalidContent(kamelets []KameletInfo) (errors []error) {
for _, kamelet := range kamelets {
ser, err := json.Marshal(&kamelet.Kamelet)
if err != nil {
errors = append(errors, perrors.Wrapf(err, "cannot marshal kamelet %q", kamelet.Name))
continue
}
var unstr unstructured.Unstructured
err = json.Unmarshal(ser, &unstr)
if err != nil {
errors = append(errors, perrors.Wrapf(err, "cannot unmarshal kamelet %q", kamelet.Name))
continue
}
file, err := ioutil.ReadFile(kamelet.FileName)
if err != nil {
errors = append(errors, perrors.Wrapf(err, "cannot load kamelet %q", kamelet.Name))
continue
}
var yamlFile map[string]interface{}
err = yamlv3.Unmarshal(file, &yamlFile)
if err != nil {
errors = append(errors, perrors.Wrapf(err, "kamelet %q is not a valid YAML file", kamelet.Name))
continue
}
jsonFile, err := yaml.ToJSON(file)
if err != nil {
errors = append(errors, perrors.Wrapf(err, "cannot convert kamelet %q to JSON", kamelet.Name))
continue
}
unstrFile := unstructured.Unstructured{}
err = json.Unmarshal(jsonFile, &unstrFile)
if err != nil {
errors = append(errors, perrors.Wrapf(err, "cannot unmarshal kamelet file %q", kamelet.Name))
continue
}
if !equality.Semantic.DeepDerivative(unstrFile, unstr) {
errors = append(errors, fmt.Errorf("kamelet %q contains invalid content that is not supported by the Kamelet schema", kamelet.Name))
}
}
return errors
}