diff --git a/embrawtest/myapp/foo.yaml.gotmpl b/embrawtest/myapp/foo.yaml.gotmpl new file mode 100644 index 00000000..e69de29b diff --git a/go.mod b/go.mod index 895ce4fe..a8768770 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/spf13/cobra v1.1.1 github.com/tatsushid/go-prettytable v0.0.0-20141013043238-ed2d14c29939 github.com/urfave/cli v1.22.5 - github.com/variantdev/chartify v0.6.0 + github.com/variantdev/chartify v0.7.0 github.com/variantdev/dag v0.0.0-20191028002400-bb0b3c785363 github.com/variantdev/vals v0.13.0 go.uber.org/multierr v1.6.0 diff --git a/go.sum b/go.sum index bedc8e6a..35dea978 100644 --- a/go.sum +++ b/go.sum @@ -573,6 +573,8 @@ github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU= github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= github.com/variantdev/chartify v0.6.0 h1:QQ00a8Vtuhk6F9jeTZJEXV2g0zRXhYG43xovWZrc3ac= github.com/variantdev/chartify v0.6.0/go.mod h1:qF4XzQlkfH/6k2jAi1hLas+lK4zSCa8kY+r5JdmLA68= +github.com/variantdev/chartify v0.7.0 h1:LQU9bW734CPTIRRx9AG6rIolqW3GgbqaFZQTOCNOfn8= +github.com/variantdev/chartify v0.7.0/go.mod h1:qF4XzQlkfH/6k2jAi1hLas+lK4zSCa8kY+r5JdmLA68= github.com/variantdev/dag v0.0.0-20191028002400-bb0b3c785363 h1:KrfQBEUn+wEOQ/6UIfoqRDvn+Q/wZridQ7t0G1vQqKE= github.com/variantdev/dag v0.0.0-20191028002400-bb0b3c785363/go.mod h1:pH1TQsNSLj2uxMo9NNl9zdGy01Wtn+/2MT96BrKmVyE= github.com/variantdev/vals v0.13.0 h1:zdtTBjoWKkUGdFauxETkDVjqWXdjUNwI+ggWcUmpxv8= diff --git a/pkg/state/helmx.go b/pkg/state/helmx.go index 2d709e36..63b98c0a 100644 --- a/pkg/state/helmx.go +++ b/pkg/state/helmx.go @@ -2,12 +2,13 @@ package state import ( "fmt" - "github.com/roboll/helmfile/pkg/helmexec" - "github.com/roboll/helmfile/pkg/remote" - "github.com/variantdev/chartify" "os" "path/filepath" "strings" + + "github.com/roboll/helmfile/pkg/helmexec" + "github.com/roboll/helmfile/pkg/remote" + "github.com/variantdev/chartify" ) type Dependency struct { @@ -195,6 +196,8 @@ func (st *HelmState) PrepareChartify(helm helmexec.Interface, release *ReleaseSp filesNeedCleaning = append(filesNeedCleaning, generatedFiles...) chartify.Opts.ValuesFiles = generatedFiles + chartify.Opts.TemplateData = st.newReleaseTemplateData(release) + chartify.Opts.TemplateFuncs = st.newReleaseTemplateFuncMap(dir) return chartify, clean, nil } diff --git a/pkg/state/state.go b/pkg/state/state.go index 491ab549..4858c4f3 100644 --- a/pkg/state/state.go +++ b/pkg/state/state.go @@ -2417,10 +2417,22 @@ func (st *HelmState) flagsForLint(helm helmexec.Interface, release *ReleaseSpec, return flags, files, nil } -func (st *HelmState) RenderReleaseValuesFileToBytes(release *ReleaseSpec, path string) ([]byte, error) { +func (st *HelmState) newReleaseTemplateData(release *ReleaseSpec) releaseTemplateData { vals := st.Values() templateData := st.createReleaseTemplateData(release, vals) + return templateData +} + +func (st *HelmState) newReleaseTemplateFuncMap(dir string) template.FuncMap { + r := tmpl.NewFileRenderer(st.readFile, dir, nil) + + return r.Context.CreateFuncMap() +} + +func (st *HelmState) RenderReleaseValuesFileToBytes(release *ReleaseSpec, path string) ([]byte, error) { + templateData := st.newReleaseTemplateData(release) + r := tmpl.NewFileRenderer(st.readFile, filepath.Dir(path), templateData) rawBytes, err := r.RenderToBytes(path) if err != nil { diff --git a/pkg/tmpl/context_tmpl.go b/pkg/tmpl/context_tmpl.go index 16d7e81d..68c1e265 100644 --- a/pkg/tmpl/context_tmpl.go +++ b/pkg/tmpl/context_tmpl.go @@ -6,7 +6,7 @@ import ( "text/template" ) -func (c *Context) newTemplate() *template.Template { +func (c *Context) CreateFuncMap() template.FuncMap { aliased := template.FuncMap{} aliases := map[string]string{ @@ -27,6 +27,12 @@ func (c *Context) newTemplate() *template.Template { funcMap[name] = f } + return funcMap +} + +func (c *Context) newTemplate() *template.Template { + funcMap := c.CreateFuncMap() + tmpl := template.New("stringTemplate").Funcs(funcMap) if c.preRender { tmpl = tmpl.Option("missingkey=zero")