From ff839dc6db0f5e9abef848a2ddc3b5ae988c51dc Mon Sep 17 00:00:00 2001 From: Colin Date: Tue, 23 Nov 2021 21:57:08 -0500 Subject: [PATCH] Fix env var interpolation (#236) --- kong.go | 1 + resolver_test.go | 17 +++++++++++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/kong.go b/kong.go index 70107d5..45ef8b8 100644 --- a/kong.go +++ b/kong.go @@ -201,6 +201,7 @@ func (k *Kong) interpolateValue(value *Value, vars Vars) (err error) { if value.Flag.Env, err = interpolate(value.Flag.Env, vars, nil); err != nil { return fmt.Errorf("env value for %s: %s", value.Summary(), err) } + value.Tag.Env = value.Flag.Env updatedVars["env"] = value.Flag.Env } value.Help, err = interpolate(value.Help, vars, updatedVars) diff --git a/resolver_test.go b/resolver_test.go index fa83465..81d64f1 100644 --- a/resolver_test.go +++ b/resolver_test.go @@ -37,17 +37,26 @@ func TestEnvarsFlagBasic(t *testing.T) { var cli struct { String string `env:"KONG_STRING"` Slice []int `env:"KONG_SLICE"` + Interp string `env:"${kongInterp}"` } - parser, unsetEnvs := newEnvParser(t, &cli, envMap{ - "KONG_STRING": "bye", - "KONG_SLICE": "5,2,9", - }) + kongInterpEnv := "KONG_INTERP" + parser, unsetEnvs := newEnvParser(t, &cli, + envMap{ + "KONG_STRING": "bye", + "KONG_SLICE": "5,2,9", + "KONG_INTERP": "foo", + }, + kong.Vars{ + "kongInterp": kongInterpEnv, + }, + ) defer unsetEnvs() _, err := parser.Parse([]string{}) require.NoError(t, err) require.Equal(t, "bye", cli.String) require.Equal(t, []int{5, 2, 9}, cli.Slice) + require.Equal(t, "foo", cli.Interp) } func TestEnvarsFlagOverride(t *testing.T) {