Only allow users to choose a single package in the interactive prompt

This commit is contained in:
Elara 2023-09-20 15:52:25 -07:00
parent f66132559d
commit f637dd06a7
1 changed files with 10 additions and 15 deletions

View File

@ -103,11 +103,11 @@ func FlattenPkgs(found map[string][]db.Package, verb string, interactive bool) [
var outPkgs []db.Package var outPkgs []db.Package
for _, pkgs := range found { for _, pkgs := range found {
if len(pkgs) > 1 && interactive { if len(pkgs) > 1 && interactive {
choices, err := PkgPrompt(pkgs, verb, interactive) choice, err := PkgPrompt(pkgs, verb, interactive)
if err != nil { if err != nil {
log.Fatal("Error prompting for choice of package").Send() log.Fatal("Error prompting for choice of package").Send()
} }
outPkgs = append(outPkgs, choices...) outPkgs = append(outPkgs, choice)
} else if len(pkgs) == 1 || !interactive { } else if len(pkgs) == 1 || !interactive {
outPkgs = append(outPkgs, pkgs[0]) outPkgs = append(outPkgs, pkgs[0])
} }
@ -117,9 +117,9 @@ func FlattenPkgs(found map[string][]db.Package, verb string, interactive bool) [
// PkgPrompt asks the user to choose between multiple packages. // PkgPrompt asks the user to choose between multiple packages.
// The user may choose multiple packages. // The user may choose multiple packages.
func PkgPrompt(options []db.Package, verb string, interactive bool) ([]db.Package, error) { func PkgPrompt(options []db.Package, verb string, interactive bool) (db.Package, error) {
if !interactive { if !interactive {
return []db.Package{options[0]}, nil return options[0], nil
} }
names := make([]string, len(options)) names := make([]string, len(options))
@ -127,21 +127,16 @@ func PkgPrompt(options []db.Package, verb string, interactive bool) ([]db.Packag
names[i] = option.Repository + "/" + option.Name + " " + option.Version names[i] = option.Repository + "/" + option.Name + " " + option.Version
} }
prompt := &survey.MultiSelect{ prompt := &survey.Select{
Options: names, Options: names,
Message: translations.Translator().TranslateTo("Choose which package(s) to "+verb, config.Language()), Message: translations.Translator().TranslateTo("Choose which package to "+verb, config.Language()),
} }
var choices []int var choice int
err := survey.AskOne(prompt, &choices) err := survey.AskOne(prompt, &choice)
if err != nil { if err != nil {
return nil, err return db.Package{}, err
} }
out := make([]db.Package, len(choices)) return options[choice], nil
for i, choiceIndex := range choices {
out[i] = options[choiceIndex]
}
return out, nil
} }