kubeconform/pkg/schema/schema.go
2020-10-27 18:42:13 +01:00

40 lines
691 B
Go

package schema
import (
"errors"
"strings"
"github.com/xeipuuv/gojsonschema"
)
type multiError []error
func (m multiError) Error() string {
var r []string
for _, e := range ([]error)(m) {
r = append(r, e.Error())
}
return strings.Join(r, "\n")
}
// Schema TODO
type Schema gojsonschema.Schema
// Validate TODO
func (s *Schema) Validate(resource map[string]interface{}) error {
results, err := (*gojsonschema.Schema)(s).Validate(gojsonschema.NewGoLoader(resource))
if err != nil {
return err
}
if results.Valid() {
return nil
}
var errs []error
for _, e := range results.Errors() {
errs = append(errs, errors.New(e.Description()))
}
return multiError(errs)
}