Skip to content

Commit

Permalink
Use parseNumberMenu() for yogurt mode
Browse files Browse the repository at this point in the history
  • Loading branch information
Morganamilo committed Mar 10, 2018
1 parent 2aadd19 commit 287bac0
Showing 1 changed file with 33 additions and 64 deletions.
97 changes: 33 additions & 64 deletions cmd.go
Original file line number Diff line number Diff line change
Expand Up @@ -588,9 +588,6 @@ func removeListFromList(src, target []string) []string {

// NumberMenu presents a CLI for selecting packages to install.
func numberMenu(pkgS []string, flags []string) (err error) {
//func numberMenu(cmdArgs *arguments) (err error) {
var num int

aurQ, err := narrowSearch(pkgS, true)
if err != nil {
fmt.Println("Error during AUR search:", err)
Expand All @@ -615,83 +612,55 @@ func numberMenu(pkgS []string, flags []string) (err error) {

fmt.Println(bold(green(arrow + " Packages to install (eg: 1 2 3, 1-3 or ^4)")))
fmt.Print(bold(green(arrow + " ")))

reader := bufio.NewReader(os.Stdin)
numberBuf, overflow, err := reader.ReadLine()
if err != nil || overflow {
fmt.Println(err)
return

if err != nil {
return err
}

numberString := string(numberBuf)
var aurI, aurNI, repoNI, repoI []string
result := strings.Fields(numberString)
for _, numS := range result {
negate := numS[0] == '^'
if negate {
numS = numS[1:]
}
var numbers []int
num, err = strconv.Atoi(numS)
if err != nil {
numbers, err = BuildRange(numS)
if err != nil {
continue
}
} else {
numbers = []int{num}
if overflow {
return fmt.Errorf("Input too long")
}

include, exclude, _, otherExclude := parseNumberMenu(string(numberBuf))
arguments := makeArguments()

isInclude := len(exclude) == 0 && len(otherExclude) == 0

for i, pkg := range repoQ {
target := len(repoQ) - i
if config.SortMode == TopDown {
target = i + 1
}

// Install package
for _, x := range numbers {
var target string
if x > numaq+numpq || x <= 0 {
continue
} else if x > numpq {
if config.SortMode == BottomUp {
target = aurQ[numaq+numpq-x].Name
} else {
target = aurQ[x-numpq-1].Name
}
if negate {
aurNI = append(aurNI, target)
} else {
aurI = append(aurI, target)
}
} else {
if config.SortMode == BottomUp {
target = repoQ[numpq-x].Name()
} else {
target = repoQ[x-1].Name()
}
if negate {
repoNI = append(repoNI, target)
} else {
repoI = append(repoI, target)
}
}
if isInclude && include.get(target) {
arguments.addTarget(pkg.Name())
}
if !isInclude && !exclude.get(target) {
arguments.addTarget(pkg.Name())
}
}

if len(repoI) == 0 && len(aurI) == 0 &&
(len(aurNI) > 0 || len(repoNI) > 0) {
// If no package was specified, only exclusions, exclude from all the
// packages
for _, pack := range aurQ {
aurI = append(aurI, pack.Name)
for i, pkg := range aurQ {
target := len(aurQ) - i + len(repoQ)
if config.SortMode == TopDown {
target = i + 1 + len(repoQ)
}

if isInclude && include.get(target) {
arguments.addTarget(pkg.Name)
}
for _, pack := range repoQ {
repoI = append(repoI, pack.Name())
if !isInclude && !exclude.get(target) {
arguments.addTarget(pkg.Name)
}
}
aurI = removeListFromList(aurNI, aurI)
repoI = removeListFromList(repoNI, repoI)

if config.SudoLoop {
sudoLoopBackground()
}
arguments := makeArguments()
arguments.addTarget(repoI...)
arguments.addTarget(aurI...)

err = install(arguments)

return err
Expand Down

0 comments on commit 287bac0

Please sign in to comment.