From c3688407afb9daba29fb3292d8006d86e67f3de9 Mon Sep 17 00:00:00 2001 From: Yann Hamon Date: Mon, 1 Jun 2020 23:33:46 +0200 Subject: [PATCH] cache can be nil --- main.go | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/main.go b/main.go index a651ae1..43cf2c1 100644 --- a/main.go +++ b/main.go @@ -66,7 +66,7 @@ func downloadSchema(registries []registry.Registry, kind, version, k8sVersion st // filter returns true if the file should be skipped // Returning an array, this Reader might container multiple resources -func validateFile(r io.Reader, regs []registry.Registry, k8sVersion string, c *cache.SchemaCache, skip func(signature resource.Signature) bool) []validationResult { +func ValidateStream(r io.Reader, regs []registry.Registry, k8sVersion string, c *cache.SchemaCache, skip func(signature resource.Signature) bool) []validationResult { rawResources, err := resourcesFromReader(r) if err != nil { return []validationResult{{err: fmt.Errorf("failed reading file: %s", err)}} @@ -90,10 +90,14 @@ func validateFile(r io.Reader, regs []registry.Registry, k8sVersion string, c *c continue } - var ok bool + ok := false + var schema *gojsonschema.Schema + cacheKey := "" - cacheKey := cache.Key(sig.Kind, sig.Version, k8sVersion) - schema, ok := c.Get(cacheKey) + if c != nil { + cacheKey := cache.Key(sig.Kind, sig.Version, k8sVersion) + schema, ok = c.Get(cacheKey) + } if !ok { schema, err = downloadSchema(regs, sig.Kind, sig.Version, k8sVersion) if err != nil { @@ -101,9 +105,11 @@ func validateFile(r io.Reader, regs []registry.Registry, k8sVersion string, c *c continue } else if schema == nil { // skip if no schema was found, but there was no error validationResults = append(validationResults, validationResult{kind: sig.Kind, version: sig.Version, err: nil, skipped: true}) - c.Set(cacheKey, nil) + if c != nil { + c.Set(cacheKey, nil) + } continue - } else { + } else if c != nil { c.Set(cacheKey, schema) } } @@ -242,7 +248,7 @@ func realMain() int { continue } - res := validateFile(f, registries, k8sVersion, c, filter) + res := ValidateStream(f, registries, k8sVersion, c, filter) f.Close() for i := range res {