diff --git a/pkg/cli/prompt_test.go b/pkg/cli/prompt_test.go index 80d3467..d793e16 100644 --- a/pkg/cli/prompt_test.go +++ b/pkg/cli/prompt_test.go @@ -165,6 +165,14 @@ func TestChooseMulti_Good_CommasAndRanges(t *testing.T) { assert.Equal(t, []string{"a", "b", "d"}, vals) } +func TestChooseMulti_Good_DefaultIndex(t *testing.T) { + SetStdin(strings.NewReader("\n")) + defer SetStdin(nil) + + vals := ChooseMulti("Pick", []string{"a", "b", "c"}, WithDefaultIndex[string](1)) + assert.Equal(t, []string{"b"}, vals) +} + func TestSetStdin_Good_ResetNil(t *testing.T) { original := stdin t.Cleanup(func() { stdin = original }) diff --git a/pkg/cli/utils.go b/pkg/cli/utils.go index 4fcd0c9..85c4a06 100644 --- a/pkg/cli/utils.go +++ b/pkg/cli/utils.go @@ -441,6 +441,9 @@ func ChooseMulti[T any](prompt string, items []T, opts ...ChooseOption[T]) []T { // Empty response returns no selections if response == "" { + if cfg.defaultN >= 0 { + return []T{items[defaultVisibleIndex(visible, cfg.defaultN)]} + } return nil }