mirror of
https://github.com/yannh/kubeconform.git
synced 2026-02-20 10:27:02 +00:00
handle files and dirs as parameters
This commit is contained in:
parent
cdcacb080d
commit
a938c47e2e
2 changed files with 39 additions and 13 deletions
|
|
@ -74,10 +74,12 @@ $ echo $?
|
||||||
|
|
||||||
* Validating a folder, increasing the number of parallel workers
|
* Validating a folder, increasing the number of parallel workers
|
||||||
```
|
```
|
||||||
$ ./bin/kubeconform -dir fixtures -summary -n 16
|
$ ./bin/kubeconform -summary -n 16 fixtures
|
||||||
fixtures/multi_invalid.yaml - Service is invalid: Invalid type. Expected: integer, given: string
|
fixtures/multi_invalid.yaml - Service is invalid: Invalid type. Expected: integer, given: string
|
||||||
fixtures/invalid.yaml - ReplicationController is invalid: Invalid type. Expected: [integer,null], given: string
|
fixtures/invalid.yaml - ReplicationController is invalid: Invalid type. Expected: [integer,null], given: string
|
||||||
Run summary - Valid: 40, Invalid: 2, Errors: 0 Skipped: 6
|
[...]
|
||||||
|
Summary: 48 resources found in 25 files - Valid: 39, Invalid: 2, Errors: 7 Skipped: 0
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
* Validating a custom resources, using a local schema
|
* Validating a custom resources, using a local schema
|
||||||
|
|
|
||||||
46
main.go
46
main.go
|
|
@ -178,7 +178,7 @@ func processResults(o output.Output, validationResults chan []validationResult,
|
||||||
}
|
}
|
||||||
|
|
||||||
func realMain() int {
|
func realMain() int {
|
||||||
var dirs, schemas arrayParam
|
var schemas arrayParam
|
||||||
var skipKindsCSV, k8sVersion, outputFormat string
|
var skipKindsCSV, k8sVersion, outputFormat string
|
||||||
var summary, strict, verbose, ignoreMissingSchemas bool
|
var summary, strict, verbose, ignoreMissingSchemas bool
|
||||||
var nWorkers int
|
var nWorkers int
|
||||||
|
|
@ -186,7 +186,6 @@ func realMain() int {
|
||||||
var files []string
|
var files []string
|
||||||
|
|
||||||
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(&dirs, "dir", "directory to validate (can be specified multiple times)")
|
|
||||||
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(&ignoreMissingSchemas, "ignore-missing-schemas", false, "skip files with missing schemas instead of failing")
|
flag.BoolVar(&ignoreMissingSchemas, "ignore-missing-schemas", false, "skip files with missing schemas instead of failing")
|
||||||
flag.BoolVar(&summary, "summary", false, "print a summary at the end")
|
flag.BoolVar(&summary, "summary", false, "print a summary at the end")
|
||||||
|
|
@ -218,16 +217,43 @@ func realMain() int {
|
||||||
registries = append(registries, localRegistry)
|
registries = append(registries, localRegistry)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
validationResults := make(chan []validationResult)
|
||||||
|
|
||||||
fileBatches := make(chan []string)
|
fileBatches := make(chan []string)
|
||||||
go func() {
|
go func() {
|
||||||
for _, dir := range dirs {
|
|
||||||
if err := fsutils.FindYamlInDir(dir, fileBatches, 10); err != nil {
|
|
||||||
log.Printf("failed processing folder %s: %s", dir, err)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, filename := range files {
|
for _, filename := range files {
|
||||||
fileBatches <- []string{filename}
|
file, err := os.Open(filename)
|
||||||
|
if err != nil {
|
||||||
|
validationResults <- []validationResult{{
|
||||||
|
filename: filename,
|
||||||
|
err: err,
|
||||||
|
skipped: true,
|
||||||
|
}}
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
defer file.Close()
|
||||||
|
|
||||||
|
fi, err := file.Stat();
|
||||||
|
switch {
|
||||||
|
case err != nil:
|
||||||
|
validationResults <- []validationResult{{
|
||||||
|
filename: filename,
|
||||||
|
err: err,
|
||||||
|
skipped: true,
|
||||||
|
}}
|
||||||
|
|
||||||
|
case fi.IsDir():
|
||||||
|
if err := fsutils.FindYamlInDir(filename, fileBatches, 10); err != nil {
|
||||||
|
validationResults <- []validationResult{{
|
||||||
|
filename: filename,
|
||||||
|
err: err,
|
||||||
|
skipped: true,
|
||||||
|
}}
|
||||||
|
}
|
||||||
|
|
||||||
|
default:
|
||||||
|
fileBatches <- []string{filename}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
close(fileBatches)
|
close(fileBatches)
|
||||||
|
|
@ -240,7 +266,6 @@ func realMain() int {
|
||||||
}
|
}
|
||||||
|
|
||||||
res := make(chan bool)
|
res := make(chan bool)
|
||||||
validationResults := make(chan []validationResult)
|
|
||||||
go processResults(o, validationResults, res)
|
go processResults(o, validationResults, res)
|
||||||
|
|
||||||
c := cache.New()
|
c := cache.New()
|
||||||
|
|
@ -254,7 +279,6 @@ func realMain() int {
|
||||||
for _, filename := range fileBatch {
|
for _, filename := range fileBatch {
|
||||||
f, err := os.Open(filename)
|
f, err := os.Open(filename)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
fmt.Printf("failed opening %s\n", filename)
|
|
||||||
validationResults <- []validationResult{{
|
validationResults <- []validationResult{{
|
||||||
filename: filename,
|
filename: filename,
|
||||||
err: err,
|
err: err,
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue