From 14e2cf06e223943371d7dd5d4bd3c7c10e59c6d2 Mon Sep 17 00:00:00 2001 From: michaeljguarino Date: Wed, 17 Apr 2024 14:44:41 -0400 Subject: [PATCH] Support .tpl extensions for values files (#168) For users who are more accustomed to go templates from helm itself. --- pkg/manifests/template/helm.go | 12 +++++++++--- pkg/manifests/template/tpl.go | 26 ++++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 3 deletions(-) create mode 100644 pkg/manifests/template/tpl.go diff --git a/pkg/manifests/template/helm.go b/pkg/manifests/template/helm.go index 5e053824..dc01b09a 100644 --- a/pkg/manifests/template/helm.go +++ b/pkg/manifests/template/helm.go @@ -182,10 +182,16 @@ func (h *helm) valuesFile(svc *console.GetServiceDeploymentForAgent_ServiceDeplo if strings.HasSuffix(filename, ".liquid") { data, err = renderLiquid(data, svc) - if err != nil { - return nil, err - } } + + if strings.HasSuffix(filename, ".tpl") { + data, err = renderTpl(data, svc) + } + + if err != nil { + return nil, err + } + if err := yaml.Unmarshal(data, ¤tMap); err != nil { return nil, errors.Wrapf(err, "failed to parse %s", filename) } diff --git a/pkg/manifests/template/tpl.go b/pkg/manifests/template/tpl.go new file mode 100644 index 00000000..11ecfea9 --- /dev/null +++ b/pkg/manifests/template/tpl.go @@ -0,0 +1,26 @@ +package template + +import ( + "bytes" + "text/template" + + "github.com/Masterminds/sprig/v3" + console "github.com/pluralsh/console-client-go" +) + +func renderTpl(input []byte, svc *console.GetServiceDeploymentForAgent_ServiceDeployment) ([]byte, error) { + bindings := map[string]interface{}{ + "Configuration": configMap(svc), + "Cluster": clusterConfiguration(svc.Cluster), + "Contexts": contexts(svc), + } + + tpl, err := template.New("gotpl").Funcs(sprig.TxtFuncMap()).Parse(string(input)) + if err != nil { + return nil, err + } + + var buffer bytes.Buffer + err = tpl.Execute(&buffer, bindings) + return buffer.Bytes(), err +}