mirror of
https://github.com/yannh/kubeconform.git
synced 2026-02-24 04:07:02 +00:00
further breakdown of main function
This commit is contained in:
parent
795cc54679
commit
0cb1f40f24
1 changed files with 45 additions and 24 deletions
69
main.go
69
main.go
|
|
@ -114,23 +114,52 @@ func validateFile(r io.Reader, regs []registry.Registry, k8sVersion string, c *c
|
||||||
return validationResults
|
return validationResults
|
||||||
}
|
}
|
||||||
|
|
||||||
type arrayFiles []string
|
type arrayParam []string
|
||||||
|
|
||||||
func (i *arrayFiles) String() string {
|
func (ap *arrayParam) String() string {
|
||||||
return "my string representation"
|
s := ""
|
||||||
|
for _, param := range *ap {
|
||||||
|
if s == "" {
|
||||||
|
s += param
|
||||||
|
} else {
|
||||||
|
s += " - " + param
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return s
|
||||||
}
|
}
|
||||||
|
|
||||||
func (i *arrayFiles) Set(value string) error {
|
func (ap *arrayParam) Set(value string) error {
|
||||||
*i = append(*i, value)
|
*ap = append(*ap, value)
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getLogger(outputFormat string, printSummary, quiet bool) (output.Output, error) {
|
||||||
|
switch {
|
||||||
|
case outputFormat == "text":
|
||||||
|
return output.NewTextOutput(printSummary, quiet)
|
||||||
|
case outputFormat == "json":
|
||||||
|
return output.NewJSONOutput(printSummary, quiet)
|
||||||
|
default:
|
||||||
|
return nil, fmt.Errorf("-output must be text or json")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func skipKindsMap(skipKindsCSV string) map[string]bool {
|
||||||
|
splitKinds := strings.Split(skipKindsCSV, ",")
|
||||||
|
skipKinds := map[string]bool{}
|
||||||
|
for _, kind := range splitKinds {
|
||||||
|
skipKinds[kind] = true
|
||||||
|
}
|
||||||
|
return skipKinds
|
||||||
|
}
|
||||||
|
|
||||||
func realMain() int {
|
func realMain() int {
|
||||||
var files, dirs, schemas arrayFiles
|
var files, dirs, schemas arrayParam
|
||||||
var skipKinds, k8sVersion, outputFormat string
|
var skipKindsCSV, k8sVersion, outputFormat string
|
||||||
var printSummary, strict bool
|
var printSummary, strict, quiet bool
|
||||||
var nWorkers int
|
var nWorkers int
|
||||||
var quiet bool
|
var err error
|
||||||
|
|
||||||
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.Var(&files, "file", "file to validate (can be specified multiple times)")
|
flag.Var(&files, "file", "file to validate (can be specified multiple times)")
|
||||||
|
|
@ -138,29 +167,22 @@ func realMain() int {
|
||||||
flag.Var(&schemas, "schema", "file containing an additional Schema (can be specified multiple times)")
|
flag.Var(&schemas, "schema", "file containing an additional Schema (can be specified multiple times)")
|
||||||
flag.BoolVar(&printSummary, "printsummary", false, "print a summary at the end")
|
flag.BoolVar(&printSummary, "printsummary", false, "print a summary at the end")
|
||||||
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(&skipKinds, "skipKinds", "", "comma-separated list of kinds to ignore")
|
flag.StringVar(&skipKindsCSV, "skipKinds", "", "comma-separated list of kinds to ignore")
|
||||||
flag.BoolVar(&strict, "strict", false, "disallow additional properties not in schema")
|
flag.BoolVar(&strict, "strict", false, "disallow additional properties not in schema")
|
||||||
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()
|
||||||
|
|
||||||
var o output.Output
|
var o output.Output
|
||||||
switch {
|
if o, err = getLogger(outputFormat, printSummary, quiet); err != nil {
|
||||||
case outputFormat == "text":
|
fmt.Println(err)
|
||||||
o = output.NewTextOutput(printSummary, quiet)
|
return 1
|
||||||
case outputFormat == "json":
|
|
||||||
o = output.NewJSONOutput(printSummary, quiet)
|
|
||||||
default:
|
|
||||||
log.Fatalf("-output must be text or json")
|
|
||||||
}
|
}
|
||||||
|
|
||||||
splitKinds := strings.Split(skipKinds, ",")
|
skipKinds := skipKindsMap(skipKindsCSV)
|
||||||
kinds := map[string]bool{}
|
|
||||||
for _, kind := range splitKinds {
|
|
||||||
kinds[kind] = true
|
|
||||||
}
|
|
||||||
filter := func(signature resource.Signature) bool {
|
filter := func(signature resource.Signature) bool {
|
||||||
isSkipKind, ok := kinds[signature.Kind]
|
isSkipKind, ok := skipKinds[signature.Kind]
|
||||||
return ok && isSkipKind
|
return ok && isSkipKind
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -175,7 +197,6 @@ func realMain() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
fileBatches := make(chan []string)
|
fileBatches := make(chan []string)
|
||||||
|
|
||||||
go func() {
|
go func() {
|
||||||
for _, dir := range dirs {
|
for _, dir := range dirs {
|
||||||
if err := fsutils.FindYamlInDir(dir, fileBatches, 10); err != nil {
|
if err := fsutils.FindYamlInDir(dir, fileBatches, 10); err != nil {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue