4 files changed
+130
-142
No files matched your search
+59
-58
@@ -10,79 +10,80 @@ import (
|
||||
)
|
||||
|
||||
func questionCallback(question alpm.QuestionAny) {
|
||||
qi, err := question.QuestionInstallIgnorepkg()
|
||||
if err == nil {
|
||||
if qi, err := question.QuestionInstallIgnorepkg(); err == nil {
|
||||
qi.SetInstall(true)
|
||||
}
|
||||
|
||||
qp, err := question.QuestionSelectProvider()
|
||||
if err == nil {
|
||||
size := 0
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
qp.Providers(alpmHandle).ForEach(func(pkg alpm.Package) error {
|
||||
size++
|
||||
return nil
|
||||
})
|
||||
size := 0
|
||||
|
||||
fmt.Print(bold(cyan(":: ")))
|
||||
str := bold(fmt.Sprintf(bold("There are %d providers available for %s:"), size, qp.Dep()))
|
||||
qp.Providers(alpmHandle).ForEach(func(pkg alpm.Package) error {
|
||||
size++
|
||||
return nil
|
||||
})
|
||||
|
||||
size = 1
|
||||
var db string
|
||||
fmt.Print(bold(cyan(":: ")))
|
||||
str := bold(fmt.Sprintf(bold("There are %d providers available for %s:"), size, qp.Dep()))
|
||||
|
||||
qp.Providers(alpmHandle).ForEach(func(pkg alpm.Package) error {
|
||||
thisDb := pkg.DB().Name()
|
||||
size = 1
|
||||
var db string
|
||||
|
||||
if db != thisDb {
|
||||
db = thisDb
|
||||
str += bold(cyan("\n:: ")) + bold("Repository "+db+"\n ")
|
||||
}
|
||||
str += fmt.Sprintf("%d) %s ", size, pkg.Name())
|
||||
size++
|
||||
return nil
|
||||
})
|
||||
qp.Providers(alpmHandle).ForEach(func(pkg alpm.Package) error {
|
||||
thisDb := pkg.DB().Name()
|
||||
|
||||
fmt.Println(str)
|
||||
if db != thisDb {
|
||||
db = thisDb
|
||||
str += bold(cyan("\n:: ")) + bold("Repository "+db+"\n ")
|
||||
}
|
||||
str += fmt.Sprintf("%d) %s ", size, pkg.Name())
|
||||
size++
|
||||
return nil
|
||||
})
|
||||
|
||||
for {
|
||||
fmt.Print("\nEnter a number (default=1): ")
|
||||
fmt.Println(str)
|
||||
|
||||
if config.NoConfirm {
|
||||
fmt.Println()
|
||||
break
|
||||
}
|
||||
for {
|
||||
fmt.Print("\nEnter a number (default=1): ")
|
||||
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
numberBuf, overflow, err := reader.ReadLine()
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
break
|
||||
}
|
||||
|
||||
if overflow {
|
||||
fmt.Println("Input too long")
|
||||
continue
|
||||
}
|
||||
|
||||
if string(numberBuf) == "" {
|
||||
break
|
||||
}
|
||||
|
||||
num, err := strconv.Atoi(string(numberBuf))
|
||||
if err != nil {
|
||||
fmt.Printf("%s invalid number: %s\n", red("error:"), string(numberBuf))
|
||||
continue
|
||||
}
|
||||
|
||||
if num < 1 || num > size {
|
||||
fmt.Printf("%s invalid value: %d is not between %d and %d\n", red("error:"), num, 1, size)
|
||||
continue
|
||||
}
|
||||
|
||||
qp.SetUseIndex(num - 1)
|
||||
if config.NoConfirm {
|
||||
fmt.Println()
|
||||
break
|
||||
}
|
||||
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
numberBuf, overflow, err := reader.ReadLine()
|
||||
|
||||
if err != nil {
|
||||
fmt.Println(err)
|
||||
break
|
||||
}
|
||||
|
||||
if overflow {
|
||||
fmt.Println("Input too long")
|
||||
continue
|
||||
}
|
||||
|
||||
if string(numberBuf) == "" {
|
||||
break
|
||||
}
|
||||
|
||||
num, err := strconv.Atoi(string(numberBuf))
|
||||
if err != nil {
|
||||
fmt.Printf("%s invalid number: %s\n", red("error:"), string(numberBuf))
|
||||
continue
|
||||
}
|
||||
|
||||
if num < 1 || num > size {
|
||||
fmt.Printf("%s invalid value: %d is not between %d and %d\n", red("error:"), num, 1, size)
|
||||
continue
|
||||
}
|
||||
|
||||
qp.SetUseIndex(num - 1)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -14,8 +14,7 @@ func removeVCSPackage(pkgs []string) {
|
||||
updated := false
|
||||
|
||||
for _, pkgName := range pkgs {
|
||||
_, ok := savedInfo[pkgName]
|
||||
if ok {
|
||||
if _, ok := savedInfo[pkgName]; ok {
|
||||
delete(savedInfo, pkgName)
|
||||
updated = true
|
||||
}
|
||||
@@ -34,10 +33,10 @@ func cleanDependencies(removeOptional bool) error {
|
||||
}
|
||||
|
||||
if len(hanging) != 0 {
|
||||
err = cleanRemove(hanging)
|
||||
return cleanRemove(hanging)
|
||||
}
|
||||
|
||||
return err
|
||||
return nil
|
||||
}
|
||||
|
||||
// CleanRemove sends a full removal command to pacman with the pkgName slice
|
||||
@@ -49,8 +48,8 @@ func cleanRemove(pkgNames []string) (err error) {
|
||||
arguments := makeArguments()
|
||||
arguments.addArg("R")
|
||||
arguments.addTarget(pkgNames...)
|
||||
err = show(passToPacman(arguments))
|
||||
return err
|
||||
|
||||
return show(passToPacman(arguments))
|
||||
}
|
||||
|
||||
func syncClean(parser *arguments) error {
|
||||
@@ -69,8 +68,7 @@ func syncClean(parser *arguments) error {
|
||||
}
|
||||
|
||||
if mode == ModeRepo || mode == ModeAny {
|
||||
err = show(passToPacman(parser))
|
||||
if err != nil {
|
||||
if err = show(passToPacman(parser)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
@@ -86,8 +84,7 @@ func syncClean(parser *arguments) error {
|
||||
question = "Do you want to remove all other AUR packages from cache?"
|
||||
}
|
||||
|
||||
fmt.Println()
|
||||
fmt.Printf("Build directory: %s\n", config.BuildDir)
|
||||
fmt.Printf("\nBuild directory: %s\n", config.BuildDir)
|
||||
|
||||
if continueTask(question, true) {
|
||||
err = cleanAUR(keepInstalled, keepCurrent, removeAll)
|
||||
@@ -98,10 +95,10 @@ func syncClean(parser *arguments) error {
|
||||
}
|
||||
|
||||
if continueTask("Do you want to remove ALL untracked AUR files?", true) {
|
||||
err = cleanUntracked()
|
||||
return cleanUntracked()
|
||||
}
|
||||
|
||||
return err
|
||||
return nil
|
||||
}
|
||||
|
||||
func cleanAUR(keepInstalled, keepCurrent, removeAll bool) error {
|
||||
@@ -192,8 +189,7 @@ func cleanUntracked() error {
|
||||
dir := filepath.Join(config.BuildDir, file.Name())
|
||||
|
||||
if shouldUseGit(dir) {
|
||||
err = show(passToGit(dir, "clean", "-fx"))
|
||||
if err != nil {
|
||||
if err = show(passToGit(dir, "clean", "-fx")); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
@@ -171,15 +171,10 @@ func handleCmd() (err error) {
|
||||
}
|
||||
|
||||
func handleQuery() error {
|
||||
var err error
|
||||
|
||||
if cmdArgs.existsArg("u", "upgrades") {
|
||||
err = printUpdateList(cmdArgs)
|
||||
} else {
|
||||
err = show(passToPacman(cmdArgs))
|
||||
return printUpdateList(cmdArgs)
|
||||
}
|
||||
|
||||
return err
|
||||
return show(passToPacman(cmdArgs))
|
||||
}
|
||||
|
||||
func handleHelp() error {
|
||||
@@ -187,7 +182,6 @@ func handleHelp() error {
|
||||
usage()
|
||||
return nil
|
||||
}
|
||||
|
||||
return show(passToPacman(cmdArgs))
|
||||
}
|
||||
|
||||
@@ -289,8 +283,7 @@ func handleConfig(option, value string) bool {
|
||||
case "gpg":
|
||||
config.GpgBin = value
|
||||
case "requestsplitn":
|
||||
n, err := strconv.Atoi(value)
|
||||
if err == nil && n > 0 {
|
||||
if n, err := strconv.Atoi(value); err == nil && n > 0 {
|
||||
config.RequestSplitN = n
|
||||
}
|
||||
case "sudoloop":
|
||||
@@ -340,9 +333,10 @@ func handleConfig(option, value string) bool {
|
||||
case "askremovemake":
|
||||
config.RemoveMake = "ask"
|
||||
default:
|
||||
// the option was not handled by the switch
|
||||
return false
|
||||
}
|
||||
|
||||
// the option was successfully handled by the switch
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -373,38 +367,36 @@ func handlePrint() (err error) {
|
||||
default:
|
||||
err = nil
|
||||
}
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
func handleYay() (err error) {
|
||||
func handleYay() error {
|
||||
//_, options, targets := cmdArgs.formatArgs()
|
||||
if cmdArgs.existsArg("gendb") {
|
||||
err = createDevelDB()
|
||||
} else if cmdArgs.existsDouble("c") {
|
||||
err = cleanDependencies(true)
|
||||
} else if cmdArgs.existsArg("c", "clean") {
|
||||
err = cleanDependencies(false)
|
||||
} else if len(cmdArgs.targets) > 0 {
|
||||
err = handleYogurt()
|
||||
return createDevelDB()
|
||||
}
|
||||
|
||||
return
|
||||
if cmdArgs.existsDouble("c") {
|
||||
return cleanDependencies(true)
|
||||
}
|
||||
if cmdArgs.existsArg("c", "clean") {
|
||||
return cleanDependencies(false)
|
||||
}
|
||||
if len(cmdArgs.targets) > 0 {
|
||||
return handleYogurt()
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func handleGetpkgbuild() (err error) {
|
||||
err = getPkgbuilds(cmdArgs.targets)
|
||||
return
|
||||
func handleGetpkgbuild() error {
|
||||
return getPkgbuilds(cmdArgs.targets)
|
||||
}
|
||||
|
||||
func handleYogurt() (err error) {
|
||||
func handleYogurt() error {
|
||||
config.SearchMode = NumberMenu
|
||||
err = numberMenu(cmdArgs.targets)
|
||||
|
||||
return
|
||||
return numberMenu(cmdArgs.targets)
|
||||
}
|
||||
|
||||
func handleSync() (err error) {
|
||||
func handleSync() error {
|
||||
targets := cmdArgs.targets
|
||||
|
||||
if cmdArgs.existsArg("s", "search") {
|
||||
@@ -413,44 +405,50 @@ func handleSync() (err error) {
|
||||
} else {
|
||||
config.SearchMode = Detailed
|
||||
}
|
||||
|
||||
err = syncSearch(targets)
|
||||
} else if cmdArgs.existsArg("p", "print", "print-format") {
|
||||
err = show(passToPacman(cmdArgs))
|
||||
} else if cmdArgs.existsArg("c", "clean") {
|
||||
err = syncClean(cmdArgs)
|
||||
} else if cmdArgs.existsArg("l", "list") {
|
||||
err = show(passToPacman(cmdArgs))
|
||||
} else if cmdArgs.existsArg("g", "groups") {
|
||||
err = show(passToPacman(cmdArgs))
|
||||
} else if cmdArgs.existsArg("i", "info") {
|
||||
err = syncInfo(targets)
|
||||
} else if cmdArgs.existsArg("u", "sysupgrade") {
|
||||
err = install(cmdArgs)
|
||||
} else if len(cmdArgs.targets) > 0 {
|
||||
err = install(cmdArgs)
|
||||
} else if cmdArgs.existsArg("y", "refresh") {
|
||||
err = show(passToPacman(cmdArgs))
|
||||
return syncSearch(targets)
|
||||
}
|
||||
|
||||
return
|
||||
if cmdArgs.existsArg("p", "print", "print-format") {
|
||||
return show(passToPacman(cmdArgs))
|
||||
}
|
||||
if cmdArgs.existsArg("c", "clean") {
|
||||
return syncClean(cmdArgs)
|
||||
}
|
||||
if cmdArgs.existsArg("l", "list") {
|
||||
return show(passToPacman(cmdArgs))
|
||||
}
|
||||
if cmdArgs.existsArg("g", "groups") {
|
||||
return show(passToPacman(cmdArgs))
|
||||
}
|
||||
if cmdArgs.existsArg("i", "info") {
|
||||
return syncInfo(targets)
|
||||
}
|
||||
if cmdArgs.existsArg("u", "sysupgrade") {
|
||||
return install(cmdArgs)
|
||||
}
|
||||
if len(cmdArgs.targets) > 0 {
|
||||
return install(cmdArgs)
|
||||
}
|
||||
if cmdArgs.existsArg("y", "refresh") {
|
||||
return show(passToPacman(cmdArgs))
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func handleRemove() (err error) {
|
||||
func handleRemove() error {
|
||||
removeVCSPackage(cmdArgs.targets)
|
||||
err = show(passToPacman(cmdArgs))
|
||||
return
|
||||
return show(passToPacman(cmdArgs))
|
||||
}
|
||||
|
||||
// NumberMenu presents a CLI for selecting packages to install.
|
||||
func numberMenu(pkgS []string) (err error) {
|
||||
var (
|
||||
aurErr, repoErr error
|
||||
aq aurQuery
|
||||
pq repoQuery
|
||||
lenaq, lenpq int
|
||||
)
|
||||
|
||||
pkgS = removeInvalidTargets(pkgS)
|
||||
var aurErr error
|
||||
var repoErr error
|
||||
var aq aurQuery
|
||||
var pq repoQuery
|
||||
var lenaq int
|
||||
var lenpq int
|
||||
|
||||
if mode == ModeAUR || mode == ModeAny {
|
||||
aq, aurErr = narrowSearch(pkgS, true)
|
||||
@@ -493,12 +491,11 @@ func numberMenu(pkgS []string) (err error) {
|
||||
fmt.Print(bold(green(arrow + " ")))
|
||||
|
||||
reader := bufio.NewReader(os.Stdin)
|
||||
numberBuf, overflow, err := reader.ReadLine()
|
||||
|
||||
numberBuf, overflow, err := reader.ReadLine()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if overflow {
|
||||
return fmt.Errorf("Input too long")
|
||||
}
|
||||
@@ -514,10 +511,7 @@ func numberMenu(pkgS []string) (err error) {
|
||||
target = i + 1
|
||||
}
|
||||
|
||||
if isInclude && include.get(target) {
|
||||
arguments.addTarget(pkg.DB().Name() + "/" + pkg.Name())
|
||||
}
|
||||
if !isInclude && !exclude.get(target) {
|
||||
if (isInclude && include.get(target)) || (!isInclude && !exclude.get(target)) {
|
||||
arguments.addTarget(pkg.DB().Name() + "/" + pkg.Name())
|
||||
}
|
||||
}
|
||||
@@ -528,10 +522,7 @@ func numberMenu(pkgS []string) (err error) {
|
||||
target = i + 1 + len(pq)
|
||||
}
|
||||
|
||||
if isInclude && include.get(target) {
|
||||
arguments.addTarget("aur/" + pkg.Name)
|
||||
}
|
||||
if !isInclude && !exclude.get(target) {
|
||||
if (isInclude && include.get(target)) || (!isInclude && !exclude.get(target)) {
|
||||
arguments.addTarget("aur/" + pkg.Name)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -118,7 +118,7 @@ var alpmConf alpm.PacmanConfig
|
||||
var alpmHandle *alpm.Handle
|
||||
|
||||
// Mode is used to restrict yay to AUR or repo only modes
|
||||
var mode targetMode = ModeAny
|
||||
var mode = ModeAny
|
||||
|
||||
func readAlpmConfig(pacmanconf string) (conf alpm.PacmanConfig, err error) {
|
||||
file, err := os.Open(pacmanconf)
|
||||
|
||||
Reference in new issue
Block a user