Fix env var interpolation (#236)

This commit is contained in:
Colin
2021-11-23 21:57:08 -05:00
committed by GitHub
parent f00d33b57c
commit ff839dc6db
2 changed files with 14 additions and 4 deletions
+1
View File
@@ -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)
+13 -4
View File
@@ -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) {