[agent/codex:gpt-5.4-mini] Read ~/spec/code/core/go/cli/RFC.md fully. Find ONE feature ... #40
2 changed files with 29 additions and 3 deletions
|
|
@ -87,9 +87,26 @@ func MultiSelect(label string, options []string) ([]string, error) {
|
|||
}
|
||||
|
||||
var selected []string
|
||||
for _, s := range strings.Fields(input) {
|
||||
n, err := strconv.Atoi(s)
|
||||
if err != nil || n < 1 || n > len(options) {
|
||||
normalized := strings.NewReplacer(",", " ").Replace(input)
|
||||
for _, s := range strings.Fields(normalized) {
|
||||
if strings.Contains(s, "-") {
|
||||
parts := strings.SplitN(s, "-", 2)
|
||||
if len(parts) != 2 {
|
||||
continue
|
||||
}
|
||||
start, startErr := strconv.Atoi(parts[0])
|
||||
end, endErr := strconv.Atoi(parts[1])
|
||||
if startErr != nil || endErr != nil || start < 1 || end > len(options) || start > end {
|
||||
continue
|
||||
}
|
||||
for n := start; n <= end; n++ {
|
||||
selected = append(selected, options[n-1])
|
||||
}
|
||||
continue
|
||||
}
|
||||
|
||||
n, convErr := strconv.Atoi(s)
|
||||
if convErr != nil || n < 1 || n > len(options) {
|
||||
continue
|
||||
}
|
||||
selected = append(selected, options[n-1])
|
||||
|
|
|
|||
|
|
@ -52,6 +52,15 @@ func TestMultiSelect_Good(t *testing.T) {
|
|||
assert.Equal(t, []string{"a", "c"}, vals)
|
||||
}
|
||||
|
||||
func TestMultiSelect_Good_CommasAndRanges(t *testing.T) {
|
||||
SetStdin(strings.NewReader("1-2,4\n"))
|
||||
defer SetStdin(nil)
|
||||
|
||||
vals, err := MultiSelect("Pick", []string{"a", "b", "c", "d"})
|
||||
assert.NoError(t, err)
|
||||
assert.Equal(t, []string{"a", "b", "d"}, vals)
|
||||
}
|
||||
|
||||
func TestConfirm_Good(t *testing.T) {
|
||||
SetStdin(strings.NewReader("y\n"))
|
||||
defer SetStdin(nil)
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue