fix bug - cache was not being used

This commit is contained in:
Yann Hamon 2020-06-02 00:08:47 +02:00
parent 6657ae9fd1
commit cee6971ee9

54
main.go
View file

@ -95,7 +95,7 @@ func ValidateStream(r io.Reader, regs []registry.Registry, k8sVersion string, c
cacheKey := "" cacheKey := ""
if c != nil { if c != nil {
cacheKey := cache.Key(sig.Kind, sig.Version, k8sVersion) cacheKey = cache.Key(sig.Kind, sig.Version, k8sVersion)
schema, ok = c.Get(cacheKey) schema, ok = c.Get(cacheKey)
} }
if !ok { if !ok {
@ -156,6 +156,23 @@ func skipKindsMap(skipKindsCSV string) map[string]bool {
return skipKinds return skipKinds
} }
func processResults(o output.Output, validationResults chan []validationResult, result chan<- bool ) {
success := true
for results := range validationResults {
for _, result := range results {
if result.err != nil {
success = false
}
if err := o.Write(result.filename, result.kind, result.version, result.err, result.skipped); err != nil {
fmt.Fprint(os.Stderr, "failed writing log\n")
}
}
}
result <- success
}
func realMain() int { func realMain() int {
var files, dirs, schemas arrayParam var files, dirs, schemas arrayParam
var skipKindsCSV, k8sVersion, outputFormat string var skipKindsCSV, k8sVersion, outputFormat string
@ -175,12 +192,6 @@ func realMain() int {
flag.BoolVar(&verbose, "verbose", false, "print results for all resources") flag.BoolVar(&verbose, "verbose", false, "print results for all resources")
flag.Parse() flag.Parse()
var o output.Output
if o, err = getLogger(outputFormat, summary, verbose); err != nil {
fmt.Println(err)
return 1
}
skipKinds := skipKindsMap(skipKindsCSV) skipKinds := skipKindsMap(skipKindsCSV)
filter := func(signature resource.Signature) bool { filter := func(signature resource.Signature) bool {
@ -213,25 +224,16 @@ func realMain() int {
close(fileBatches) close(fileBatches)
}() }()
var o output.Output
if o, err = getLogger(outputFormat, summary, verbose); err != nil {
fmt.Println(err)
return 1
}
res := make (chan bool)
validationResults := make(chan []validationResult) validationResults := make(chan []validationResult)
var logWG sync.WaitGroup go processResults(o, validationResults, res)
logWG.Add(1)
success := true
go func() {
defer logWG.Done()
for results := range validationResults {
for _, result := range results {
if result.err != nil {
success = false
}
if err = o.Write(result.filename, result.kind, result.version, result.err, result.skipped); err != nil {
fmt.Fprint(os.Stderr, "failed writing log\n")
}
}
}
}()
c := cache.New() c := cache.New()
var wg sync.WaitGroup var wg sync.WaitGroup
@ -262,7 +264,7 @@ func realMain() int {
wg.Wait() wg.Wait()
close(validationResults) close(validationResults)
logWG.Wait() success := <-res
if err = o.Flush(); err != nil { if err = o.Flush(); err != nil {
fmt.Fprint(os.Stderr, "failed flushing output") fmt.Fprint(os.Stderr, "failed flushing output")
} }