Better logging messages

This commit is contained in:
Yann Hamon 2020-05-31 04:27:18 +02:00
parent ae5fbffb95
commit 11cfca1498
4 changed files with 20 additions and 11 deletions

View file

@ -104,7 +104,7 @@ func realMain() int {
flag.IntVar(&nWorkers, "workers", 4, "number of routines to run in parallel") flag.IntVar(&nWorkers, "workers", 4, "number of routines to run in parallel")
flag.StringVar(&k8sVersion, "k8sversion", "1.18.0", "version of Kubernetes to test against") flag.StringVar(&k8sVersion, "k8sversion", "1.18.0", "version of Kubernetes to test against")
flag.StringVar(&skipKinds, "skipKinds", "", "comma-separated list of kinds to ignore") flag.StringVar(&skipKinds, "skipKinds", "", "comma-separated list of kinds to ignore")
flag.BoolVar(&strict, "strict", false, "activate strict mode") flag.BoolVar(&strict, "strict", true, "activate strict mode")
flag.StringVar(&outputFormat, "output", "text", "output format - text, json") flag.StringVar(&outputFormat, "output", "text", "output format - text, json")
flag.BoolVar(&quiet, "quiet", false, "quiet output - only print invalid files, and errors") flag.BoolVar(&quiet, "quiet", false, "quiet output - only print invalid files, and errors")
flag.Parse() flag.Parse()

View file

@ -1,6 +1,8 @@
package output package output
import "github.com/yannh/kubeconform/pkg/validator" import (
"github.com/yannh/kubeconform/pkg/validator"
)
const ( const (
VALID = iota VALID = iota
@ -15,6 +17,10 @@ type Output interface {
} }
func status(err error, skipped bool) int { func status(err error, skipped bool) int {
if skipped {
return SKIPPED
}
if err != nil { if err != nil {
if _, ok := err.(validator.InvalidResourceError); ok { if _, ok := err.(validator.InvalidResourceError); ok {
return INVALID return INVALID
@ -23,9 +29,5 @@ func status(err error, skipped bool) int {
} }
} }
if skipped {
return SKIPPED
}
return VALID return VALID
} }

View file

@ -31,18 +31,18 @@ func (o *TextOutput) Write(filename string, err error, skipped bool) {
switch { switch {
case s == VALID: case s == VALID:
if !o.quiet { if !o.quiet {
fmt.Printf("file %s is valid\n", filename) fmt.Printf("%s - file is valid\n", filename)
} }
o.nValid++ o.nValid++
case s == INVALID: case s == INVALID:
fmt.Printf("invalid resource: %s\n", err) fmt.Printf("%s - invalid resource: %s\n",filename, err)
o.nInvalid++ o.nInvalid++
case s == ERROR: case s == ERROR:
fmt.Printf("failed validating resource in file %s: %s\n", filename, err) fmt.Printf("%s - failed validating resource: %s\n", filename, err)
o.nErrors++ o.nErrors++
case s == SKIPPED: case s == SKIPPED:
if !o.quiet { if !o.quiet {
fmt.Printf("skipping resource\n") fmt.Printf("%s - skipping resource\n", filename)
} }
o.nSkipped++ o.nSkipped++
} }

View file

@ -46,7 +46,14 @@ func Validate(rawResource []byte, schema *gojsonschema.Schema) error {
} }
if !results.Valid() { if !results.Valid() {
return InvalidResourceError{err: fmt.Sprintf("resource does not conform to schema: %+v", results)} msg := ""
for _, errMsg := range results.Errors() {
if msg != "" {
msg += " - "
}
msg += errMsg.Description()
}
return InvalidResourceError{err: msg}
} }
return nil return nil