Fix env var interpolation (#236)
This commit is contained in:
@@ -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
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user