diff --git a/clean.go b/clean.go index 1877fbab..99f74ac6 100644 --- a/clean.go +++ b/clean.go @@ -54,6 +54,7 @@ func cleanRemove(pkgName []string) (err error) { return nil } - err = passToPacman("-Rsnc", pkgName, []string{"--noconfirm"}) + //TODO + //err = passToPacman("-Rsnc", pkgName, []string{"--noconfirm"}) return err } diff --git a/cmd.go b/cmd.go index 4113d82a..0130def7 100644 --- a/cmd.go +++ b/cmd.go @@ -225,21 +225,21 @@ func handleCmd(parser *argParser) (changedConfig bool, err error) { switch parser.op { case "V", "version": - handleVersion() + handleVersion(parser) case "D", "database": - //passToPacman() + passToPacman(parser) case "F", "files": - //passToPacman() + passToPacman(parser) case "Q", "query": - //passToPacman() + passToPacman(parser) case "R", "remove": - // + passToPacman(parser) case "S", "sync": err = handleSync(parser) case "T", "deptest": - //passToPacman() + passToPacman(parser) case "U", "upgrade": - //passToPacman() + passToPacman(parser) case "Y", "--yay": err = handleYay(parser) default: @@ -310,7 +310,7 @@ func handleConfig(option string) (changedConfig bool, err error) { return } -func handleVersion() { +func handleVersion(parser *argParser) { fmt.Printf("yay v%s\n", version) } @@ -338,8 +338,9 @@ func handleYay(parser *argParser) (err error) { } else if parser.existsArg("stats") { err = localStatistics() } else if parser.existsArg("cleandeps") { - _,_,targets := parser.formatArgs() - err = cleanDependencies(targets) + //TODO + //_,_,targets := parser.formatArgs() + //err = cleanDependencies(targets) } else { err = handleYogurt(parser) } @@ -348,41 +349,37 @@ func handleYay(parser *argParser) (err error) { } func handleYogurt(parser *argParser) (err error) { - _, options, targets := parser.formatArgs() - - config.SearchMode = NumberMenu - err = numberMenu(targets, options) - +// TODO +// _, options, targets := parser.formatArgs() +// +// config.SearchMode = NumberMenu +// err = numberMenu(targets, options) +// return } func handleSync(parser *argParser) (err error) { - op, options, targets := parser.formatArgs() - - fmt.Println("op", op) - fmt.Println("options", options) - fmt.Println("targets", targets) - - if parser.existsArg("y") { - err = passToPacman("-Sy", nil, nil) - if err != nil { - return - } - } - - if parser.existsArg("s") { - if parser.existsArg("i") { - config.SearchMode = Detailed - } else { - config.SortMode = Minimal - } - - err = syncSearch(targets) - } - - if len(targets) > 0 { - err = install(targets, options) - } +//TODO +// if parser.existsArg("y") || parser.existsArg("refresh") { +// err = passToPacman(parser) +// if err != nil { +// return +// } +// } +// +// if parser.existsArg("s") { +// if parser.existsArg("i") { +// config.SearchMode = Detailed +// } else { +// config.SortMode = Minimal +// } +// +// err = syncSearch(targets) +// } +// +// if len(targets) > 0 { +// err = install(targets, options) +// } return } @@ -451,7 +448,8 @@ func numberMenu(pkgS []string, flags []string) (err error) { } if len(repoI) != 0 { - err = passToPacman("-S", repoI, flags) + //TODO + //err = passToPacman("-S", repoI, flags) } if len(aurI) != 0 { diff --git a/config.go b/config.go index db182548..53710719 100644 --- a/config.go +++ b/config.go @@ -6,7 +6,6 @@ import ( "os" "os/exec" "os/user" - "strings" alpm "github.com/jguer/go-alpm" ) @@ -198,25 +197,18 @@ func continueTask(s string, def string) (cont bool) { } // PassToPacman outsorces execution to pacman binary without modifications. -func passToPacman(op string, pkgs []string, flags []string) error { +func passToPacman(parser *argParser) error { var cmd *exec.Cmd - var args []string - - args = append(args, op) - if len(pkgs) != 0 { - args = append(args, pkgs...) - } - - if len(flags) != 0 { - args = append(args, flags...) - } - - if strings.Contains(op, "-Q") || op == "Si" { - cmd = exec.Command(config.PacmanBin, args...) - } else { - args = append([]string{config.PacmanBin}, args...) - cmd = exec.Command("sudo", args...) + args := make([]string, 0) + + if parser.needRoot() { + args = append(args, "sudo") } + + args = append(args, "pacman") + args = append(args, parser.formatArgs()...) + + cmd = exec.Command(args[0], args[1:]...) cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr err := cmd.Run() diff --git a/install.go b/install.go index 23ff8039..9843a9e1 100644 --- a/install.go +++ b/install.go @@ -14,10 +14,11 @@ func install(pkgs []string, flags []string) error { aurs, repos, _ := packageSlices(pkgs) if len(repos) != 0 { - err := passToPacman("-S", repos, flags) - if err != nil { - fmt.Println("Error installing repo packages.") - } +//TODO +// err := passToPacman("-S", repos, flags) +// if err != nil { +// fmt.Println("Error installing repo packages.") +// } } if len(aurs) != 0 { @@ -138,10 +139,11 @@ func PkgInstall(a *rpc.Pkg, flags []string) (finalmdeps []string, err error) { } // Repo dependencies if len(repoDeps) != 0 { - errR := passToPacman("-S", repoDeps, depArgs) - if errR != nil { - return finalmdeps, errR - } +// TODO +// errR := passToPacman("-S", repoDeps, depArgs) +// if errR != nil { +// return finalmdeps, errR +// } } // Handle AUR dependencies diff --git a/parser.go b/parser.go index d3a5b157..1d164a82 100644 --- a/parser.go +++ b/parser.go @@ -28,6 +28,52 @@ func (praser *argParser) delArg(option string) { delete(praser.doubles, option) } +func (parser *argParser) needRoot() bool { + if parser.existsArg("h") || parser.existsArg("help") { + return false + } + + if parser.existsArg("p") || parser.existsArg("print") { + return false + } + + switch parser.op { + case "V", "version": + return false + case "D", "database": + return true + case "F", "files": + if parser.existsArg("y") || parser.existsArg("refresh") { + return true + } + return false + case "Q", "query": + return false + case "R", "remove": + return true + case "S", "sync": + if parser.existsArg("s") || parser.existsArg("search") { + return false + } + if parser.existsArg("l") || parser.existsArg("list") { + return false + } + return true + case "T", "deptest": + return false + case "U", "upgrade": + return true + + //yay specific + case "Y", "yay": + return false + case "G", "getpkgbuild": + return false + default: + return false + } +} + func (praser *argParser) addOP(op string) (err error) { if praser.op != "" { err = fmt.Errorf("only one operation may be used at a time") @@ -82,24 +128,25 @@ func (parser *argParser) existsDouble(option string) bool { return ok } -func (parser *argParser) formatArgs() (op string, options []string, targets []string) { - op = formatArg(parser.op) +func (parser *argParser) formatArgs() (args []string) { + op := formatArg(parser.op) + args = append(args, op) for option, arg := range parser.options { option = formatArg(option) - options = append(options, option) + args = append(args, option) if arg != "" { - options = append(options, arg) + args = append(args, arg) } if parser.existsDouble(option) { - options = append(options, option) + args = append(args, option) } } for target := range parser.targets { - targets = append(targets, target) + args = append(args, target) } return diff --git a/query.go b/query.go index b88c0a02..1bf90aff 100644 --- a/query.go +++ b/query.go @@ -169,7 +169,8 @@ func syncInfo(pkgS []string, flags []string) (err error) { } if len(repoS) != 0 { - err = passToPacman("-Si", repoS, flags) + //TODO + //err = passToPacman("-Si", repoS, flags) } return diff --git a/upgrade.go b/upgrade.go index e77f679b..a1f5f9a5 100644 --- a/upgrade.go +++ b/upgrade.go @@ -332,11 +332,11 @@ func upgradePkgs(flags []string) error { } repoNames = append(repoNames, k.Name) } - - err := passToPacman("-S", repoNames, append(flags, "--noconfirm")) - if err != nil { - fmt.Println("Error upgrading repo packages.") - } +// TODO +// err := passToPacman("-S", repoNames, append(flags, "--noconfirm")) +// if err != nil { +// fmt.Println("Error upgrading repo packages.") +// } } if len(aurUp) != 0 {