From aed4db02e8ca9c388ec7c3afe28e4164837dd24f Mon Sep 17 00:00:00 2001 From: Adnan Abdulhussein Date: Thu, 13 Oct 2016 19:20:12 -0700 Subject: [PATCH] fix(lint): validateNoMissingValues template regex Fixes the regex for extracting templates to include templates that suppress newlines and ignore any conditional flow statements. --- pkg/lint/rules/template.go | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/pkg/lint/rules/template.go b/pkg/lint/rules/template.go index a4d66a629..eb92a6b9f 100644 --- a/pkg/lint/rules/template.go +++ b/pkg/lint/rules/template.go @@ -71,11 +71,11 @@ func Templates(linter *support.Linter) { } /* Iterate over all the templates to check: - - It is a .yaml file - - All the values in the template file is defined - - {{}} include | quote - - Generated content is a valid Yaml file - - Metadata.Namespace is not set + - It is a .yaml file + - All the values in the template file is defined + - {{}} include | quote + - Generated content is a valid Yaml file + - Metadata.Namespace is not set */ for _, template := range chart.Templates { fileName, preExecutedTemplate := template.Name, template.Data @@ -154,12 +154,17 @@ func validateNoMissingValues(templatesPath string, chartValues chartutil.Values, // 2 - Extract every function and execute them against the loaded values // Supported {{ .Chart.Name }}, {{ .Chart.Name | quote }} - r, _ := regexp.Compile(`{{[\w|\.|\s|\|\"|\']+}}`) + r, _ := regexp.Compile(`{{[\w.\s|"'-]+}}`) functions := r.FindAllString(string(templateContent), -1) + skipRegex, _ := regexp.Compile(`if|else|end`) + // Iterate over the {{ FOO }} templates, executing them against the chartValues // We do individual templates parsing so we keep the reference for the key (str) that we want it to be interpolated. for _, str := range functions { + if skipRegex.MatchString(str) { + continue + } newtmpl, err := tmpl.Parse(str) if err != nil { return err