From 2c338db1bd9b8624dd908eb6ac137c913d9ec39d Mon Sep 17 00:00:00 2001 From: Lukas Eichler Date: Tue, 24 Oct 2017 19:39:05 +0200 Subject: [PATCH] fix(helm): Set template context inside tpl function to outer function. docs(helm): Added documentation about tpl function --- pkg/engine/engine.go | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/pkg/engine/engine.go b/pkg/engine/engine.go index 595ec2c19..3019ef4c8 100644 --- a/pkg/engine/engine.go +++ b/pkg/engine/engine.go @@ -166,19 +166,32 @@ func (e *Engine) alterFuncMap(t *template.Template) template.FuncMap { // Add the 'tpl' function here funcMap["tpl"] = func(tpl string, vals chartutil.Values) (string, error) { + basePath, err := vals.PathValue("Template.BasePath") + if err != nil { + return "", fmt.Errorf("Cannot retrieve Template.Basepath from values inside tpl function", tpl, err.Error()) + } + r := renderable{ - tpl: tpl, - vals: vals, + tpl: tpl, + vals: vals, + basePath: basePath.(string), } + println(vals.Table) + templates := map[string]renderable{} - templates["aaa_template"] = r + templateName, err := vals.PathValue("Template.Name") + if err != nil { + return "", fmt.Errorf("Cannot retrieve Template.Name from values inside tpl function", tpl, err.Error()) + } + + templates[templateName.(string)] = r result, err := e.render(templates) if err != nil { return "", fmt.Errorf("Error during tpl function execution for %q: %s", tpl, err.Error()) } - return result["aaa_template"], nil + return result[templateName.(string)], nil } return funcMap