diff --git a/pkg/envvar/const.go b/pkg/envvar/const.go index 7fa9ee82..17e89926 100644 --- a/pkg/envvar/const.go +++ b/pkg/envvar/const.go @@ -1,15 +1,18 @@ package envvar const ( - DisableInsecureFeatures = "HELMFILE_DISABLE_INSECURE_FEATURES" - DisableRunnerUniqueID = "HELMFILE_DISABLE_RUNNER_UNIQUE_ID" + DisableInsecureFeatures = "HELMFILE_DISABLE_INSECURE_FEATURES" + + // TODO: Remove this function once Helmfile v0.x SkipInsecureTemplateFunctions = "HELMFILE_SKIP_INSECURE_TEMPLATE_FUNCTIONS" - Experimental = "HELMFILE_EXPERIMENTAL" // environment variable for experimental features, expecting "true" lower case - Environment = "HELMFILE_ENVIRONMENT" - FilePath = "HELMFILE_FILE_PATH" - TempDir = "HELMFILE_TEMPDIR" - UpgradeNoticeDisabled = "HELMFILE_UPGRADE_NOTICE_DISABLED" - V1Mode = "HELMFILE_V1MODE" - GoccyGoYaml = "HELMFILE_GOCCY_GOYAML" - CacheHome = "HELMFILE_CACHE_HOME" + + DisableRunnerUniqueID = "HELMFILE_DISABLE_RUNNER_UNIQUE_ID" + Experimental = "HELMFILE_EXPERIMENTAL" // environment variable for experimental features, expecting "true" lower case + Environment = "HELMFILE_ENVIRONMENT" + FilePath = "HELMFILE_FILE_PATH" + TempDir = "HELMFILE_TEMPDIR" + UpgradeNoticeDisabled = "HELMFILE_UPGRADE_NOTICE_DISABLED" + V1Mode = "HELMFILE_V1MODE" + GoccyGoYaml = "HELMFILE_GOCCY_GOYAML" + CacheHome = "HELMFILE_CACHE_HOME" ) diff --git a/pkg/tmpl/context_funcs.go b/pkg/tmpl/context_funcs.go index 0278df69..2e618ca5 100644 --- a/pkg/tmpl/context_funcs.go +++ b/pkg/tmpl/context_funcs.go @@ -19,6 +19,7 @@ import ( "github.com/helmfile/helmfile/pkg/envvar" "github.com/helmfile/helmfile/pkg/helmexec" "github.com/helmfile/helmfile/pkg/maputil" + "github.com/helmfile/helmfile/pkg/runtime" "github.com/helmfile/helmfile/pkg/yaml" ) @@ -35,13 +36,24 @@ func (e DisableInsecureFeaturesError) Error() string { } var ( - disableInsecureFeatures bool + disableInsecureFeatures bool + + // TODO: Remove this function once Helmfile v0.x skipInsecureTemplateFunctions bool ) func init() { disableInsecureFeatures, _ = strconv.ParseBool(os.Getenv(envvar.DisableInsecureFeatures)) + + // TODO: Remove this function once Helmfile v0.x skipInsecureTemplateFunctions, _ = strconv.ParseBool(os.Getenv(envvar.SkipInsecureTemplateFunctions)) + skipInsecureTemplateFunctions = func() bool { + if runtime.V1Mode { + return false + } + b, _ := strconv.ParseBool(os.Getenv(envvar.SkipInsecureTemplateFunctions)) + return b + }() } func (c *Context) createFuncMap() template.FuncMap { @@ -86,6 +98,9 @@ func (c *Context) createFuncMap() template.FuncMap { funcMap["exec"] = func(string, []any, ...string) (string, error) { return "", DisableInsecureFeaturesErr } + funcMap["envExec"] = func(map[string]any, string, []any, ...string) (string, error) { + return "", DisableInsecureFeaturesErr + } funcMap["readFile"] = func(string) (string, error) { return "", DisableInsecureFeaturesErr } diff --git a/pkg/tmpl/context_funcs_test.go b/pkg/tmpl/context_funcs_test.go index a754b673..e9e67e04 100644 --- a/pkg/tmpl/context_funcs_test.go +++ b/pkg/tmpl/context_funcs_test.go @@ -46,7 +46,12 @@ func TestCreateFuncMap_DisabledInsecureFeatures(t *testing.T) { disableInsecureFeatures = currentVal } +// TODO: Remove this function once Helmfile v0.x func TestCreateFuncMap_SkipInsecureTemplateFunctions(t *testing.T) { + if runtime.V1Mode { + t.Logf("SkipInsecureTemplateFunctions is not supported in V1 mode") + return + } currentVal := skipInsecureTemplateFunctions {