mirror of
https://github.com/helmfile/helmfile.git
synced 2026-10-21 10:54:09 +02:00
+4
-45
@@ -3,6 +3,7 @@ package state
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"github.com/roboll/helmfile/helmexec"
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"path"
|
||||
@@ -10,17 +11,13 @@ import (
|
||||
"strconv"
|
||||
"strings"
|
||||
"sync"
|
||||
"text/template"
|
||||
|
||||
"github.com/Masterminds/sprig"
|
||||
|
||||
"github.com/roboll/helmfile/helmexec"
|
||||
|
||||
"bytes"
|
||||
"regexp"
|
||||
|
||||
"github.com/roboll/helmfile/tmpl"
|
||||
"go.uber.org/zap"
|
||||
yaml "gopkg.in/yaml.v2"
|
||||
"gopkg.in/yaml.v2"
|
||||
)
|
||||
|
||||
// HelmState structure for the helmfile
|
||||
@@ -133,24 +130,6 @@ func CreateFromYaml(content []byte, file string, logger *zap.SugaredLogger) (*He
|
||||
return &state, nil
|
||||
}
|
||||
|
||||
func stringTemplate() *template.Template {
|
||||
funcMap := sprig.TxtFuncMap()
|
||||
alterFuncMap(&funcMap)
|
||||
return template.New("stringTemplate").Funcs(funcMap)
|
||||
}
|
||||
|
||||
func alterFuncMap(funcMap *template.FuncMap) {
|
||||
(*funcMap)["requiredEnv"] = getRequiredEnv
|
||||
}
|
||||
|
||||
func getRequiredEnv(name string) (string, error) {
|
||||
if val, exists := os.LookupEnv(name); exists && len(val) > 0 {
|
||||
return val, nil
|
||||
}
|
||||
|
||||
return "", fmt.Errorf("required env var `%s` is not set", name)
|
||||
}
|
||||
|
||||
func RenderTemplateFileToBuffer(file string) (*bytes.Buffer, error) {
|
||||
content, err := ioutil.ReadFile(file)
|
||||
if err != nil {
|
||||
@@ -161,27 +140,7 @@ func RenderTemplateFileToBuffer(file string) (*bytes.Buffer, error) {
|
||||
}
|
||||
|
||||
func renderTemplateToBuffer(s string) (*bytes.Buffer, error) {
|
||||
var t, parseErr = stringTemplate().Parse(s)
|
||||
if parseErr != nil {
|
||||
return nil, parseErr
|
||||
}
|
||||
|
||||
var tplString bytes.Buffer
|
||||
var execErr = t.Execute(&tplString, nil)
|
||||
|
||||
if execErr != nil {
|
||||
return nil, execErr
|
||||
}
|
||||
|
||||
return &tplString, nil
|
||||
}
|
||||
|
||||
func renderTemplateString(s string) (string, error) {
|
||||
tplString, err := renderTemplateToBuffer(s)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return tplString.String(), nil
|
||||
return tmpl.DefaultContext.RenderTemplateToBuffer(s)
|
||||
}
|
||||
|
||||
func (state *HelmState) applyDefaultsTo(spec *ReleaseSpec) {
|
||||
|
||||
+13
-5
@@ -12,6 +12,14 @@ import (
|
||||
|
||||
var logger = helmexec.NewLogger(os.Stdout, "warn")
|
||||
|
||||
func renderTemplateToString(s string) (string, error) {
|
||||
tplString, err := renderTemplateToBuffer(s)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
return tplString.String(), nil
|
||||
}
|
||||
|
||||
func TestReadFromYaml(t *testing.T) {
|
||||
yamlFile := "example/path/to/yaml/file"
|
||||
yamlContent := []byte(`releases:
|
||||
@@ -512,7 +520,7 @@ func TestHelmState_flagsForUpgrade(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func Test_renderTemplateString(t *testing.T) {
|
||||
func Test_renderTemplateToString(t *testing.T) {
|
||||
type args struct {
|
||||
s string
|
||||
envs map[string]string
|
||||
@@ -613,16 +621,16 @@ func Test_renderTemplateString(t *testing.T) {
|
||||
for k, v := range tt.args.envs {
|
||||
err := os.Setenv(k, v)
|
||||
if err != nil {
|
||||
t.Error("renderTemplateString() could not set env var for testing")
|
||||
t.Error("renderTemplateToString() could not set env var for testing")
|
||||
}
|
||||
}
|
||||
got, err := renderTemplateString(tt.args.s)
|
||||
got, err := renderTemplateToString(tt.args.s)
|
||||
if (err != nil) != tt.wantErr {
|
||||
t.Errorf("renderTemplateString() for %s error = %v, wantErr %v", tt.name, err, tt.wantErr)
|
||||
t.Errorf("renderTemplateToString() for %s error = %v, wantErr %v", tt.name, err, tt.wantErr)
|
||||
return
|
||||
}
|
||||
if got != tt.want {
|
||||
t.Errorf("renderTemplateString() for %s = %v, want %v", tt.name, got, tt.want)
|
||||
t.Errorf("renderTemplateToString() for %s = %v, want %v", tt.name, got, tt.want)
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user