Merge pull request #4221 from cmattoon/issue-2347

Do not fail linting because of missing 'required' template values
pull/4461/head
Matthew Fisher 6 years ago committed by GitHub
commit 3f0c6c5404
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -19,6 +19,7 @@ package engine
import ( import (
"bytes" "bytes"
"fmt" "fmt"
"log"
"path" "path"
"sort" "sort"
"strings" "strings"
@ -39,6 +40,8 @@ type Engine struct {
// a value that was not passed in. // a value that was not passed in.
Strict bool Strict bool
CurrentTemplates map[string]renderable 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. // 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 // Add the 'required' function here
funcMap["required"] = func(warn string, val interface{}) (interface{}, error) { funcMap["required"] = func(warn string, val interface{}) (interface{}, error) {
if val == nil { 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) return val, fmt.Errorf(warn)
} else if _, ok := val.(string); ok { } else if _, ok := val.(string); ok {
if val == "" { 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) return val, fmt.Errorf(warn)
} }
} }

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

Loading…
Cancel
Save