Skip to content

Commit 44be791

Browse files
authored
feat: Placeholder string interpolation. (#510)
Add support string interpolation in placeholder values.
1 parent 3d03233 commit 44be791

File tree

3 files changed

+11
-4
lines changed

3 files changed

+11
-4
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -620,8 +620,8 @@ also supports dynamically adding commands via `kong.DynamicCommand()`.
620620
621621
## Variable interpolation
622622
623-
Kong supports limited variable interpolation into help strings, enum lists and
624-
default values.
623+
Kong supports limited variable interpolation into help strings, placeholder strings,
624+
enum lists and default values.
625625
626626
Variables are in the form:
627627

kong.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -270,6 +270,11 @@ func (k *Kong) interpolateValue(value *Value, vars Vars) (err error) {
270270
if len(value.Flag.Envs) != 0 {
271271
updatedVars["env"] = value.Flag.Envs[0]
272272
}
273+
274+
value.Flag.PlaceHolder, err = interpolate(value.Flag.PlaceHolder, vars, updatedVars)
275+
if err != nil {
276+
return fmt.Errorf("placeholder value for %s: %s", value.Summary(), err)
277+
}
273278
}
274279
value.Help, err = interpolate(value.Help, vars, updatedVars)
275280
if err != nil {

kong_test.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -766,8 +766,8 @@ func TestPassesThroughOriginalCommandError(t *testing.T) {
766766

767767
func TestInterpolationIntoModel(t *testing.T) {
768768
var cli struct {
769-
Flag string `default:"${default_value}" help:"Help, I need ${somebody}" enum:"${enum}"`
770-
EnumRef string `enum:"a,b" required:"" help:"One of ${enum}"`
769+
Flag string `default:"${default_value}" help:"Help, I need ${somebody}" enum:"${enum}" placeholder:"${enum}"`
770+
EnumRef string `enum:"a,b" required:"" help:"One of ${enum}" placeholder:"${enum}"`
771771
EnvRef string `env:"${env}" help:"God ${env}"`
772772
}
773773
_, err := kong.New(&cli)
@@ -787,7 +787,9 @@ func TestInterpolationIntoModel(t *testing.T) {
787787
assert.Equal(t, "Help, I need chickens!", flag.Help)
788788
assert.Equal(t, map[string]bool{"a": true, "b": true, "c": true, "d": true}, flag.EnumMap())
789789
assert.Equal(t, []string{"a", "b", "c", "d"}, flag.EnumSlice())
790+
assert.Equal(t, "a,b,c,d", flag.PlaceHolder)
790791
assert.Equal(t, "One of a,b", flag2.Help)
792+
assert.Equal(t, "a,b", flag2.PlaceHolder)
791793
assert.Equal(t, []string{"SAVE_THE_QUEEN"}, flag3.Envs)
792794
assert.Equal(t, "God SAVE_THE_QUEEN", flag3.Help)
793795
}

0 commit comments

Comments
 (0)