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 { if value.Flag.Env, err = interpolate(value.Flag.Env, vars, nil); err != nil {
return fmt.Errorf("env value for %s: %s", value.Summary(), err) return fmt.Errorf("env value for %s: %s", value.Summary(), err)
} }
value.Tag.Env = value.Flag.Env
updatedVars["env"] = value.Flag.Env updatedVars["env"] = value.Flag.Env
} }
value.Help, err = interpolate(value.Help, vars, updatedVars) value.Help, err = interpolate(value.Help, vars, updatedVars)
+11 -2
View File
@@ -37,17 +37,26 @@ func TestEnvarsFlagBasic(t *testing.T) {
var cli struct { var cli struct {
String string `env:"KONG_STRING"` String string `env:"KONG_STRING"`
Slice []int `env:"KONG_SLICE"` Slice []int `env:"KONG_SLICE"`
Interp string `env:"${kongInterp}"`
} }
parser, unsetEnvs := newEnvParser(t, &cli, envMap{ kongInterpEnv := "KONG_INTERP"
parser, unsetEnvs := newEnvParser(t, &cli,
envMap{
"KONG_STRING": "bye", "KONG_STRING": "bye",
"KONG_SLICE": "5,2,9", "KONG_SLICE": "5,2,9",
}) "KONG_INTERP": "foo",
},
kong.Vars{
"kongInterp": kongInterpEnv,
},
)
defer unsetEnvs() defer unsetEnvs()
_, err := parser.Parse([]string{}) _, err := parser.Parse([]string{})
require.NoError(t, err) require.NoError(t, err)
require.Equal(t, "bye", cli.String) require.Equal(t, "bye", cli.String)
require.Equal(t, []int{5, 2, 9}, cli.Slice) require.Equal(t, []int{5, 2, 9}, cli.Slice)
require.Equal(t, "foo", cli.Interp)
} }
func TestEnvarsFlagOverride(t *testing.T) { func TestEnvarsFlagOverride(t *testing.T) {