Do not fail linting because of missing 'required' template values

pull/4221/head
Curtis Mattoon 6 years ago
parent 374a320d0f
commit 8ce64076d3

@ -19,6 +19,7 @@ package engine
import (
"bytes"
"fmt"
"log"
"path"
"sort"
"strings"
@ -39,6 +40,8 @@ type Engine struct {
// a value that was not passed in.
Strict bool
CurrentTemplates map[string]renderable
// In LintMode, some 'required' template values may be missing, so don't fail
LintMode bool
}
// New creates a new Go template Engine instance.
@ -155,9 +158,19 @@ func (e *Engine) alterFuncMap(t *template.Template) template.FuncMap {
// Add the 'required' function here
funcMap["required"] = func(warn string, val interface{}) (interface{}, error) {
if val == nil {
if e.LintMode {
// Don't fail on missing required values when linting
log.Printf("[INFO] Missing required value: %s", warn)
return val, nil
}
return val, fmt.Errorf(warn)
} else if _, ok := val.(string); ok {
if val == "" {
if e.LintMode {
// Don't fail on missing required values when linting
log.Printf("[INFO] Missing required value: %s", warn)
return val, nil
}
return val, fmt.Errorf(warn)
}
}

@ -76,6 +76,7 @@ func Templates(linter *support.Linter, values []byte, namespace string, strict b
return
}
e := engine.New()
e.LintMode = true
if strict {
e.Strict = true
}

Loading…
Cancel
Save