From 5c11c01d853835f24edbfd0a242dc3a73d537547 Mon Sep 17 00:00:00 2001 From: jguer Date: Sun, 8 Aug 2021 20:22:39 +0200 Subject: [PATCH] refactor(exe): move sudo loop into CmdBuilder --- clean.go | 10 +++---- cmd.go | 28 ++++++++---------- diff.go | 14 ++++----- exec.go | 31 -------------------- get.go | 2 +- install.go | 30 ++++++++++---------- pkg/download/abs.go | 4 +-- pkg/download/abs_test.go | 6 ++-- pkg/download/aur.go | 7 ++--- pkg/download/aur_test.go | 6 ++-- pkg/download/unified.go | 13 ++++----- pkg/download/utils_test.go | 11 ++++++-- pkg/settings/args.go | 2 +- pkg/settings/config.go | 15 ++++++---- pkg/settings/exe/cmd_builder.go | 38 +++++++++++++++++++++++++ pkg/settings/runtime.go | 1 - pkg/upgrade/sources_test.go | 11 +++----- pkg/vcs/vcs.go | 6 ++-- pkg/vcs/vcs_test.go | 50 ++++++++++++++------------------- query.go | 2 +- vcs.go | 2 +- 21 files changed, 146 insertions(+), 143 deletions(-) delete mode 100644 exec.go diff --git a/clean.go b/clean.go index e09a6b46..e481f3e9 100644 --- a/clean.go +++ b/clean.go @@ -37,7 +37,7 @@ func cleanRemove(cmdArgs *parser.Arguments, pkgNames []string) error { _ = arguments.AddArg("R") arguments.AddTarget(pkgNames...) - return config.Runtime.CmdRunner.Show( + return config.Runtime.CmdBuilder.Show( config.Runtime.CmdBuilder.BuildPacmanCmd( arguments, config.Runtime.Mode, settings.NoConfirm)) } @@ -57,7 +57,7 @@ func syncClean(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { } if config.Runtime.Mode == parser.ModeRepo || config.Runtime.Mode == parser.ModeAny { - if err := config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + if err := config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)); err != nil { return err } @@ -177,7 +177,7 @@ func cleanUntracked() error { dir := filepath.Join(config.BuildDir, file.Name()) if isGitRepository(dir) { - if err := config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildGitCmd(dir, "clean", "-fx")); err != nil { + if err := config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildGitCmd(dir, "clean", "-fx")); err != nil { text.Warnln(gotext.Get("Unable to clean:"), dir) return err } @@ -202,12 +202,12 @@ func cleanAfter(bases []dep.Base) { text.OperationInfoln(gotext.Get("Cleaning (%d/%d): %s", i+1, len(bases), text.Cyan(dir))) - _, stderr, err := config.Runtime.CmdRunner.Capture(config.Runtime.CmdBuilder.BuildGitCmd(dir, "reset", "--hard", "HEAD"), 0) + _, stderr, err := config.Runtime.CmdBuilder.Capture(config.Runtime.CmdBuilder.BuildGitCmd(dir, "reset", "--hard", "HEAD"), 0) if err != nil { text.Errorln(gotext.Get("error resetting %s: %s", base.String(), stderr)) } - if err := config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildGitCmd(dir, "clean", "-fx", "--exclude='*.pkg.*'")); err != nil { + if err := config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildGitCmd(dir, "clean", "-fx", "--exclude='*.pkg.*'")); err != nil { fmt.Fprintln(os.Stderr, err) } } diff --git a/cmd.go b/cmd.go index 8eeba957..fc5c7f02 100644 --- a/cmd.go +++ b/cmd.go @@ -150,7 +150,7 @@ func handleCmd(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { } if config.SudoLoop && cmdArgs.NeedRoot(config.Runtime.Mode) { - sudoLoopBackground() + config.Runtime.CmdBuilder.SudoLoop() } switch cmdArgs.Op { @@ -158,10 +158,10 @@ func handleCmd(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { handleVersion() return nil case "D", "database": - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) case "F", "files": - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) case "Q", "query": return handleQuery(cmdArgs, dbExecutor) @@ -170,10 +170,10 @@ func handleCmd(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { case "S", "sync": return handleSync(cmdArgs, dbExecutor) case "T", "deptest": - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) case "U", "upgrade": - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) case "G", "getpkgbuild": return handleGetpkgbuild(cmdArgs, dbExecutor) @@ -216,7 +216,7 @@ func handleQuery(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { } return printUpdateList(cmdArgs, dbExecutor, cmdArgs.ExistsDouble("u", "sysupgrade"), filter) } - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) } @@ -225,7 +225,7 @@ func handleHelp(cmdArgs *parser.Arguments) error { usage() return nil } - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) } @@ -304,7 +304,7 @@ func handleSync(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { return syncSearch(targets, config.Runtime.AURClient, dbExecutor) } if cmdArgs.ExistsArg("p", "print", "print-format") { - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) } if cmdArgs.ExistsArg("c", "clean") { @@ -314,7 +314,7 @@ func handleSync(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { return syncList(config.Runtime.HTTPClient, cmdArgs, dbExecutor) } if cmdArgs.ExistsArg("g", "groups") { - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) } if cmdArgs.ExistsArg("i", "info") { @@ -327,14 +327,14 @@ func handleSync(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { return install(cmdArgs, dbExecutor, false) } if cmdArgs.ExistsArg("y", "refresh") { - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) } return nil } func handleRemove(cmdArgs *parser.Arguments, localCache *vcs.InfoStore) error { - err := config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + err := config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) if err == nil { localCache.RemovePackage(cmdArgs.Targets) @@ -450,10 +450,6 @@ func displayNumberMenu(pkgS []string, dbExecutor db.Executor, cmdArgs *parser.Ar return nil } - if config.SudoLoop { - sudoLoopBackground() - } - return install(arguments, dbExecutor, true) } @@ -499,7 +495,7 @@ func syncList(httpClient *http.Client, cmdArgs *parser.Arguments, dbExecutor db. } if (config.Runtime.Mode == parser.ModeAny || config.Runtime.Mode == parser.ModeRepo) && (len(cmdArgs.Targets) != 0 || !aur) { - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) } diff --git a/diff.go b/diff.go index 487844e0..df93c3e6 100644 --- a/diff.go +++ b/diff.go @@ -50,7 +50,7 @@ func showPkgbuildDiffs(bases []dep.Base, cloned map[string]bool) error { } else { args = append(args, "--color=never") } - _ = config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildGitCmd(dir, args...)) + _ = config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildGitCmd(dir, args...)) } return errMulti.Return() @@ -60,7 +60,7 @@ func showPkgbuildDiffs(bases []dep.Base, cloned map[string]bool) error { // HEAD@{upstream} func gitHasDiff(path, name string) (bool, error) { if gitHasLastSeenRef(path, name) { - stdout, stderr, err := config.Runtime.CmdRunner.Capture( + stdout, stderr, err := config.Runtime.CmdBuilder.Capture( config.Runtime.CmdBuilder.BuildGitCmd(filepath.Join(path, name), "rev-parse", gitDiffRefName, "HEAD@{upstream}"), 0) if err != nil { return false, fmt.Errorf("%s%s", stderr, err) @@ -79,7 +79,7 @@ func gitHasDiff(path, name string) (bool, error) { // Return wether or not we have reviewed a diff yet. It checks for the existence of // YAY_DIFF_REVIEW in the git ref-list func gitHasLastSeenRef(path, name string) bool { - _, _, err := config.Runtime.CmdRunner.Capture( + _, _, err := config.Runtime.CmdBuilder.Capture( config.Runtime.CmdBuilder.BuildGitCmd( filepath.Join(path, name), "rev-parse", "--quiet", "--verify", gitDiffRefName), 0) return err == nil @@ -89,7 +89,7 @@ func gitHasLastSeenRef(path, name string) bool { // If it does not it will return empty tree as no diff have been reviewed yet. func getLastSeenHash(path, name string) (string, error) { if gitHasLastSeenRef(path, name) { - stdout, stderr, err := config.Runtime.CmdRunner.Capture( + stdout, stderr, err := config.Runtime.CmdBuilder.Capture( config.Runtime.CmdBuilder.BuildGitCmd( filepath.Join(path, name), "rev-parse", gitDiffRefName), 0) if err != nil { @@ -105,7 +105,7 @@ func getLastSeenHash(path, name string) (string, error) { // Update the YAY_DIFF_REVIEW ref to HEAD. We use this ref to determine which diff were // reviewed by the user func gitUpdateSeenRef(path, name string) error { - _, stderr, err := config.Runtime.CmdRunner.Capture( + _, stderr, err := config.Runtime.CmdBuilder.Capture( config.Runtime.CmdBuilder.BuildGitCmd( filepath.Join(path, name), "update-ref", gitDiffRefName, "HEAD"), 0) if err != nil { @@ -115,14 +115,14 @@ func gitUpdateSeenRef(path, name string) error { } func gitMerge(path, name string) error { - _, stderr, err := config.Runtime.CmdRunner.Capture( + _, stderr, err := config.Runtime.CmdBuilder.Capture( config.Runtime.CmdBuilder.BuildGitCmd( filepath.Join(path, name), "reset", "--hard", "HEAD"), 0) if err != nil { return fmt.Errorf(gotext.Get("error resetting %s: %s", name, stderr)) } - _, stderr, err = config.Runtime.CmdRunner.Capture( + _, stderr, err = config.Runtime.CmdBuilder.Capture( config.Runtime.CmdBuilder.BuildGitCmd( filepath.Join(path, name), "merge", "--no-edit", "--ff"), 0) if err != nil { diff --git a/exec.go b/exec.go deleted file mode 100644 index e65c62c5..00000000 --- a/exec.go +++ /dev/null @@ -1,31 +0,0 @@ -package main - -import ( - "fmt" - "os" - "os/exec" - "time" -) - -func sudoLoopBackground() { - updateSudo() - go sudoLoop() -} - -func sudoLoop() { - for { - updateSudo() - time.Sleep(241 * time.Second) - } -} - -func updateSudo() { - for { - err := config.Runtime.CmdRunner.Show(exec.Command(config.SudoBin, "-v")) - if err != nil { - fmt.Fprintln(os.Stderr, err) - } else { - break - } - } -} diff --git a/get.go b/get.go index 95c72275..365f6640 100644 --- a/get.go +++ b/get.go @@ -50,7 +50,7 @@ func getPkgbuilds(dbExecutor db.Executor, config *settings.Configuration, target if err != nil { return err } - cloned, errD := download.PKGBUILDRepos(dbExecutor, config.Runtime.CmdRunner, + cloned, errD := download.PKGBUILDRepos(dbExecutor, config.Runtime.CmdBuilder, targets, config.Runtime.Mode, config.AURURL, wd, force) if errD != nil { text.Errorln(errD) diff --git a/install.go b/install.go index a2fca76b..3ac5c414 100644 --- a/install.go +++ b/install.go @@ -38,7 +38,7 @@ func asdeps(cmdArgs *parser.Arguments, pkgs []string) (err error) { cmdArgs = cmdArgs.CopyGlobal() _ = cmdArgs.AddArg("q", "D", "asdeps") cmdArgs.AddTarget(pkgs...) - err = config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + err = config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) if err != nil { return fmt.Errorf(gotext.Get("error updating package install reason to dependency")) @@ -55,7 +55,7 @@ func asexp(cmdArgs *parser.Arguments, pkgs []string) (err error) { cmdArgs = cmdArgs.CopyGlobal() _ = cmdArgs.AddArg("q", "D", "asexplicit") cmdArgs.AddTarget(pkgs...) - err = config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + err = config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) if err != nil { return fmt.Errorf(gotext.Get("error updating package install reason to explicit")) @@ -170,7 +170,7 @@ func install(cmdArgs *parser.Arguments, dbExecutor db.Executor, ignoreProviders if arguments.ExistsArg("ignore") { cmdArgs.CreateOrAppendOption("ignore", arguments.GetArgs("ignore")...) } - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) } @@ -253,7 +253,7 @@ func install(cmdArgs *parser.Arguments, dbExecutor db.Executor, ignoreProviders len(toSkipSlice), len(toClone), text.Cyan(strings.Join(toSkipSlice, ", ")))) } - cloned, errA := download.AURPKGBUILDRepos(config.Runtime.CmdRunner, + cloned, errA := download.AURPKGBUILDRepos( config.Runtime.CmdBuilder, toClone, config.AURURL, config.BuildDir, false) if errA != nil { return err @@ -344,7 +344,7 @@ func install(cmdArgs *parser.Arguments, dbExecutor db.Executor, ignoreProviders } if len(arguments.Targets) > 0 || arguments.ExistsArg("u") { - if errShow := config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + if errShow := config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( arguments, config.Runtime.Mode, settings.NoConfirm)); errShow != nil { return errors.New(gotext.Get("error installing repo packages")) } @@ -404,7 +404,7 @@ func removeMake(do *dep.Order) error { oldValue := settings.NoConfirm settings.NoConfirm = true - err = config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + err = config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( removeArguments, config.Runtime.Mode, settings.NoConfirm)) settings.NoConfirm = oldValue @@ -449,7 +449,7 @@ func earlyPacmanCall(cmdArgs *parser.Arguments, dbExecutor db.Executor) error { } if cmdArgs.ExistsArg("y", "refresh") || cmdArgs.ExistsArg("u", "sysupgrade") || len(arguments.Targets) > 0 { - if err := config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + if err := config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( arguments, config.Runtime.Mode, settings.NoConfirm)); err != nil { return errors.New(gotext.Get("error installing repo packages")) } @@ -466,7 +466,7 @@ func earlyRefresh(cmdArgs *parser.Arguments) error { arguments.DelArg("i", "info") arguments.DelArg("l", "list") arguments.ClearTargets() - return config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + return config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( arguments, config.Runtime.Mode, settings.NoConfirm)) } @@ -521,7 +521,7 @@ nextpkg: } func parsePackageList(dir string) (pkgdests map[string]string, pkgVersion string, err error) { - stdout, stderr, err := config.Runtime.CmdRunner.Capture( + stdout, stderr, err := config.Runtime.CmdBuilder.Capture( config.Runtime.CmdBuilder.BuildMakepkgCmd(dir, "--packagelist"), 0) if err != nil { return nil, "", fmt.Errorf("%s %s", stderr, err) @@ -853,7 +853,7 @@ func downloadPkgbuildsSources(bases []dep.Base, incompatible stringset.StringSet args = append(args, "--ignorearch") } - err = config.Runtime.CmdRunner.Show( + err = config.Runtime.CmdBuilder.Show( config.Runtime.CmdBuilder.BuildMakepkgCmd(dir, args...)) if err != nil { return errors.New(gotext.Get("error downloading sources: %s", text.Cyan(base.String()))) @@ -905,7 +905,7 @@ func buildInstallPkgbuilds( return nil } - if errShow := config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + if errShow := config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( arguments, config.Runtime.Mode, settings.NoConfirm)); errShow != nil { return errShow } @@ -965,7 +965,7 @@ func buildInstallPkgbuilds( } // pkgver bump - if err = config.Runtime.CmdRunner.Show( + if err = config.Runtime.CmdBuilder.Show( config.Runtime.CmdBuilder.BuildMakepkgCmd(dir, args...)); err != nil { return errors.New(gotext.Get("error making: %s", base.String())) } @@ -1003,7 +1003,7 @@ func buildInstallPkgbuilds( } if installed { - err = config.Runtime.CmdRunner.Show( + err = config.Runtime.CmdBuilder.Show( config.Runtime.CmdBuilder.BuildMakepkgCmd( dir, "-c", "--nobuild", "--noextract", "--ignorearch")) if err != nil { @@ -1016,7 +1016,7 @@ func buildInstallPkgbuilds( } if built { - err = config.Runtime.CmdRunner.Show( + err = config.Runtime.CmdBuilder.Show( config.Runtime.CmdBuilder.BuildMakepkgCmd( dir, "-c", "--nobuild", "--noextract", "--ignorearch")) if err != nil { @@ -1031,7 +1031,7 @@ func buildInstallPkgbuilds( args = append(args, "--ignorearch") } - if errMake := config.Runtime.CmdRunner.Show( + if errMake := config.Runtime.CmdBuilder.Show( config.Runtime.CmdBuilder.BuildMakepkgCmd( dir, args...)); errMake != nil { return errors.New(gotext.Get("error making: %s", base.String())) diff --git a/pkg/download/abs.go b/pkg/download/abs.go index d5d6e59d..1e589300 100644 --- a/pkg/download/abs.go +++ b/pkg/download/abs.go @@ -83,12 +83,12 @@ func ABSPKGBUILD(httpClient *http.Client, dbName, pkgName string) ([]byte, error } // ABSPKGBUILDRepo retrieves the PKGBUILD repository to a dest directory. -func ABSPKGBUILDRepo(cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, dbName, pkgName, dest string, force bool) (bool, error) { +func ABSPKGBUILDRepo(cmdBuilder exe.GitCmdBuilder, dbName, pkgName, dest string, force bool) (bool, error) { pkgURL, err := getPackageRepoURL(dbName) if err != nil { return false, err } - return downloadGitRepo(cmdRunner, cmdBuilder, pkgURL, + return downloadGitRepo(cmdBuilder, pkgURL, pkgName, dest, force, "--single-branch", "-b", "packages/"+pkgName) } diff --git a/pkg/download/abs_test.go b/pkg/download/abs_test.go index 78de9ec9..072d5b7f 100644 --- a/pkg/download/abs_test.go +++ b/pkg/download/abs_test.go @@ -197,11 +197,12 @@ func TestABSPKGBUILDRepo(t *testing.T) { test: t, want: "/usr/local/bin/git --no-replace-objects -C /tmp/doesnt-exist clone --no-progress --single-branch -b packages/linux https://github.com/archlinux/svntogit-packages.git linux", parentBuilder: &exe.CmdBuilder{ + Runner: cmdRunner, GitBin: "/usr/local/bin/git", GitFlags: []string{"--no-replace-objects"}, }, } - newClone, err := ABSPKGBUILDRepo(cmdRunner, cmdBuilder, "core", "linux", "/tmp/doesnt-exist", false) + newClone, err := ABSPKGBUILDRepo(cmdBuilder, "core", "linux", "/tmp/doesnt-exist", false) assert.NoError(t, err) assert.Equal(t, true, newClone) } @@ -221,11 +222,12 @@ func TestABSPKGBUILDRepoExistsPerms(t *testing.T) { test: t, want: fmt.Sprintf("/usr/local/bin/git --no-replace-objects -C %s/linux pull --ff-only", dir), parentBuilder: &exe.CmdBuilder{ + Runner: cmdRunner, GitBin: "/usr/local/bin/git", GitFlags: []string{"--no-replace-objects"}, }, } - newClone, err := ABSPKGBUILDRepo(cmdRunner, cmdBuilder, "core", "linux", dir, false) + newClone, err := ABSPKGBUILDRepo(cmdBuilder, "core", "linux", dir, false) assert.NoError(t, err) assert.Equal(t, false, newClone) } diff --git a/pkg/download/aur.go b/pkg/download/aur.go index 088571fc..1a9bdc92 100644 --- a/pkg/download/aur.go +++ b/pkg/download/aur.go @@ -41,14 +41,13 @@ func AURPKGBUILD(httpClient *http.Client, pkgName string) ([]byte, error) { } // AURPkgbuildRepo retrieves the PKGBUILD repository to a dest directory. -func AURPKGBUILDRepo(cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, aurURL, pkgName, dest string, force bool) (bool, error) { +func AURPKGBUILDRepo(cmdBuilder exe.GitCmdBuilder, aurURL, pkgName, dest string, force bool) (bool, error) { pkgURL := fmt.Sprintf("%s/%s.git", aurURL, pkgName) - return downloadGitRepo(cmdRunner, cmdBuilder, pkgURL, pkgName, dest, force) + return downloadGitRepo(cmdBuilder, pkgURL, pkgName, dest, force) } func AURPKGBUILDRepos( - cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, targets []string, aurURL, dest string, force bool) (map[string]bool, error) { cloned := make(map[string]bool, len(targets)) @@ -67,7 +66,7 @@ func AURPKGBUILDRepos( wg.Add(1) go func(target string) { - newClone, err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, aurURL, target, dest, force) + newClone, err := AURPKGBUILDRepo(cmdBuilder, aurURL, target, dest, force) if err != nil { errs.Add(err) diff --git a/pkg/download/aur_test.go b/pkg/download/aur_test.go index 3b1cda74..c06cac27 100644 --- a/pkg/download/aur_test.go +++ b/pkg/download/aur_test.go @@ -80,11 +80,12 @@ func TestAURPKGBUILDRepo(t *testing.T) { test: t, want: "/usr/local/bin/git --no-replace-objects -C /tmp/doesnt-exist clone --no-progress https://aur.archlinux.org/yay-bin.git yay-bin", parentBuilder: &exe.CmdBuilder{ + Runner: cmdRunner, GitBin: "/usr/local/bin/git", GitFlags: []string{"--no-replace-objects"}, }, } - newCloned, err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, "https://aur.archlinux.org", "yay-bin", "/tmp/doesnt-exist", false) + newCloned, err := AURPKGBUILDRepo(cmdBuilder, "https://aur.archlinux.org", "yay-bin", "/tmp/doesnt-exist", false) assert.NoError(t, err) assert.Equal(t, true, newCloned) } @@ -104,11 +105,12 @@ func TestAURPKGBUILDRepoExistsPerms(t *testing.T) { test: t, want: fmt.Sprintf("/usr/local/bin/git --no-replace-objects -C %s/yay-bin pull --ff-only", dir), parentBuilder: &exe.CmdBuilder{ + Runner: cmdRunner, GitBin: "/usr/local/bin/git", GitFlags: []string{"--no-replace-objects"}, }, } - cloned, err := AURPKGBUILDRepo(cmdRunner, cmdBuilder, "https://aur.archlinux.org", "yay-bin", dir, false) + cloned, err := AURPKGBUILDRepo(cmdBuilder, "https://aur.archlinux.org", "yay-bin", dir, false) assert.NoError(t, err) assert.Equal(t, false, cloned) } diff --git a/pkg/download/unified.go b/pkg/download/unified.go index d2fd5e77..4a54b168 100644 --- a/pkg/download/unified.go +++ b/pkg/download/unified.go @@ -22,8 +22,8 @@ type DBSearcher interface { SatisfierFromDB(string, string) db.IPackage } -func downloadGitRepo(cmdRunner exe.Runner, - cmdBuilder exe.GitCmdBuilder, pkgURL, pkgName, dest string, force bool, gitArgs ...string) (bool, error) { +func downloadGitRepo(cmdBuilder exe.GitCmdBuilder, + pkgURL, pkgName, dest string, force bool, gitArgs ...string) (bool, error) { finalDir := filepath.Join(dest, pkgName) newClone := true @@ -41,7 +41,7 @@ func downloadGitRepo(cmdRunner exe.Runner, cloneArgs = append(cloneArgs, gitArgs...) cmd := cmdBuilder.BuildGitCmd(dest, cloneArgs...) - _, stderr, errCapture := cmdRunner.Capture(cmd, 0) + _, stderr, errCapture := cmdBuilder.Capture(cmd, 0) if errCapture != nil { return false, ErrGetPKGBUILDRepo{inner: errCapture, pkgName: pkgName, errOut: stderr} } @@ -54,7 +54,7 @@ func downloadGitRepo(cmdRunner exe.Runner, } else { cmd := cmdBuilder.BuildGitCmd(filepath.Join(dest, pkgName), "pull", "--ff-only") - _, stderr, errCmd := cmdRunner.Capture(cmd, 0) + _, stderr, errCmd := cmdBuilder.Capture(cmd, 0) if errCmd != nil { return false, ErrGetPKGBUILDRepo{inner: errCmd, pkgName: pkgName, errOut: stderr} } @@ -126,7 +126,6 @@ func PKGBUILDs(dbExecutor DBSearcher, httpClient *http.Client, targets []string, } func PKGBUILDRepos(dbExecutor DBSearcher, - cmdRunner exe.Runner, cmdBuilder exe.GitCmdBuilder, targets []string, mode parser.TargetMode, aurURL, dest string, force bool) (map[string]bool, error) { cloned := make(map[string]bool, len(targets)) @@ -155,9 +154,9 @@ func PKGBUILDRepos(dbExecutor DBSearcher, var newClone bool if aur { - newClone, err = AURPKGBUILDRepo(cmdRunner, cmdBuilder, aurURL, pkgName, dest, force) + newClone, err = AURPKGBUILDRepo(cmdBuilder, aurURL, pkgName, dest, force) } else { - newClone, err = ABSPKGBUILDRepo(cmdRunner, cmdBuilder, dbName, pkgName, dest, force) + newClone, err = ABSPKGBUILDRepo(cmdBuilder, dbName, pkgName, dest, force) } if err != nil { diff --git a/pkg/download/utils_test.go b/pkg/download/utils_test.go index 9178c2ba..47f85311 100644 --- a/pkg/download/utils_test.go +++ b/pkg/download/utils_test.go @@ -9,8 +9,7 @@ import ( "github.com/Jguer/yay/v10/pkg/settings/exe" ) -type testRunner struct { -} +type testRunner struct{} func (t *testRunner) Capture(cmd *exec.Cmd, timeout int64) (stdout string, stderr string, err error) { return "", "", nil @@ -35,3 +34,11 @@ func (t *testGitBuilder) BuildGitCmd(dir string, extraArgs ...string) *exec.Cmd t.index += 1 return cmd } + +func (c *testGitBuilder) Show(cmd *exec.Cmd) error { + return c.parentBuilder.Show(cmd) +} + +func (c *testGitBuilder) Capture(cmd *exec.Cmd, timeout int64) (stdout, stderr string, err error) { + return c.parentBuilder.Capture(cmd, timeout) +} diff --git a/pkg/settings/args.go b/pkg/settings/args.go index 4e6a7dbc..add87005 100644 --- a/pkg/settings/args.go +++ b/pkg/settings/args.go @@ -15,7 +15,7 @@ func (c *Configuration) ParseCommandLine(a *parser.Arguments) error { c.extractYayOptions(a) // Reload CmdBuilder - c.Runtime.CmdBuilder = c.CmdBuilder() + c.Runtime.CmdBuilder = c.CmdBuilder(nil) return nil } diff --git a/pkg/settings/config.go b/pkg/settings/config.go index 1c72ced0..74ffeb5e 100644 --- a/pkg/settings/config.go +++ b/pkg/settings/config.go @@ -208,8 +208,7 @@ func NewConfig(version string) (*Configuration, error) { Mode: parser.ModeAny, SaveConfig: false, CompletionPath: filepath.Join(cacheHome, completionFileName), - CmdRunner: &exe.OSRunner{}, - CmdBuilder: newConfig.CmdBuilder(), + CmdBuilder: newConfig.CmdBuilder(nil), PacmanConf: nil, VCSStore: nil, HTTPClient: &http.Client{}, @@ -229,8 +228,8 @@ func NewConfig(version string) (*Configuration, error) { return nil, errAUR } - newConfig.Runtime.VCSStore = vcs.NewInfoStore(filepath.Join(cacheHome, vcsFileName), - newConfig.Runtime.CmdRunner, newConfig.Runtime.CmdBuilder) + newConfig.Runtime.VCSStore = vcs.NewInfoStore( + filepath.Join(cacheHome, vcsFileName), newConfig.Runtime.CmdBuilder) if err := initDir(newConfig.BuildDir); err != nil { return nil, err @@ -259,7 +258,10 @@ func (c *Configuration) load(configPath string) { } } -func (c *Configuration) CmdBuilder() exe.ICmdBuilder { +func (c *Configuration) CmdBuilder(runner exe.Runner) exe.ICmdBuilder { + if runner == nil { + runner = &exe.OSRunner{} + } return &exe.CmdBuilder{ GitBin: c.GitBin, GitFlags: strings.Fields(c.GitFlags), @@ -268,7 +270,10 @@ func (c *Configuration) CmdBuilder() exe.ICmdBuilder { MakepkgBin: c.MakepkgBin, SudoBin: c.SudoBin, SudoFlags: strings.Fields(c.SudoFlags), + SudoLoopEnabled: false, PacmanBin: c.PacmanBin, PacmanConfigPath: c.PacmanConf, + PacmanDBPath: "", + Runner: runner, } } diff --git a/pkg/settings/exe/cmd_builder.go b/pkg/settings/exe/cmd_builder.go index 6343b341..5d635b75 100644 --- a/pkg/settings/exe/cmd_builder.go +++ b/pkg/settings/exe/cmd_builder.go @@ -13,16 +13,21 @@ import ( "github.com/Jguer/yay/v10/pkg/text" ) +const SudoLoopDuration = 241 + type GitCmdBuilder interface { + Runner BuildGitCmd(dir string, extraArgs ...string) *exec.Cmd } type ICmdBuilder interface { + Runner BuildGitCmd(dir string, extraArgs ...string) *exec.Cmd BuildMakepkgCmd(dir string, extraArgs ...string) *exec.Cmd BuildPacmanCmd(args *parser.Arguments, mode parser.TargetMode, noConfirm bool) *exec.Cmd AddMakepkgFlag(string) SetPacmanDBPath(string) + SudoLoop() } type CmdBuilder struct { @@ -33,9 +38,11 @@ type CmdBuilder struct { MakepkgBin string SudoBin string SudoFlags []string + SudoLoopEnabled bool PacmanBin string PacmanConfigPath string PacmanDBPath string + Runner Runner } func (c *CmdBuilder) BuildGitCmd(dir string, extraArgs ...string) *exec.Cmd { @@ -123,3 +130,34 @@ func waitLock(dbPath string) { } } } + +func (c *CmdBuilder) SudoLoop() { + c.updateSudo() + go c.sudoLoopBackground() +} + +func (c *CmdBuilder) sudoLoopBackground() { + for { + c.updateSudo() + time.Sleep(SudoLoopDuration * time.Second) + } +} + +func (c *CmdBuilder) updateSudo() { + for { + err := c.Show(exec.Command(c.SudoBin, "-v")) + if err != nil { + fmt.Fprintln(os.Stderr, err) + } else { + break + } + } +} + +func (c *CmdBuilder) Show(cmd *exec.Cmd) error { + return c.Runner.Show(cmd) +} + +func (c *CmdBuilder) Capture(cmd *exec.Cmd, timeout int64) (stdout, stderr string, err error) { + return c.Runner.Capture(cmd, timeout) +} diff --git a/pkg/settings/runtime.go b/pkg/settings/runtime.go index 6f3cfae7..87aefbab 100644 --- a/pkg/settings/runtime.go +++ b/pkg/settings/runtime.go @@ -20,7 +20,6 @@ type Runtime struct { PacmanConf *pacmanconf.Config VCSStore *vcs.InfoStore CmdBuilder exe.ICmdBuilder - CmdRunner exe.Runner HTTPClient *http.Client AURClient *aur.Client } diff --git a/pkg/upgrade/sources_test.go b/pkg/upgrade/sources_test.go index 2afbed26..cfd61182 100644 --- a/pkg/upgrade/sources_test.go +++ b/pkg/upgrade/sources_test.go @@ -17,6 +17,7 @@ import ( "github.com/Jguer/yay/v10/pkg/db/mock" "github.com/Jguer/yay/v10/pkg/settings" + "github.com/Jguer/yay/v10/pkg/settings/exe" "github.com/Jguer/yay/v10/pkg/vcs" ) @@ -109,7 +110,7 @@ func Test_upDevel(t *testing.T) { config, err := settings.NewConfig("v0") assert.NoError(t, err) - config.Runtime.CmdRunner = &MockRunner{ + config.Runtime.CmdBuilder = config.CmdBuilder(&MockRunner{ Returned: []string{ "7f4c277ce7149665d1c79b76ca8fbb832a65a03b HEAD", "7f4c277ce7149665d1c79b76ca8fbb832a65a03b HEAD", @@ -117,7 +118,7 @@ func Test_upDevel(t *testing.T) { "cccccccccccccccccccccccccccccccccccccccc HEAD", "991c5b4146fd27f4aacf4e3111258a848934aaa1 HEAD", }, - } + }) type args struct { remote []alpm.IPackage @@ -134,7 +135,6 @@ func Test_upDevel(t *testing.T) { name: "No Updates", args: args{ cached: vcs.InfoStore{ - Runner: config.Runtime.CmdRunner, CmdBuilder: config.Runtime.CmdBuilder, }, remote: []alpm.IPackage{ @@ -154,7 +154,6 @@ func Test_upDevel(t *testing.T) { finalLen: 3, args: args{ cached: vcs.InfoStore{ - Runner: config.Runtime.CmdRunner, CmdBuilder: config.Runtime.CmdBuilder, OriginsByPackage: map[string]vcs.OriginInfoByURL{ "hello": { @@ -225,7 +224,6 @@ func Test_upDevel(t *testing.T) { finalLen: 1, args: args{ cached: vcs.InfoStore{ - Runner: config.Runtime.CmdRunner, CmdBuilder: config.Runtime.CmdBuilder, OriginsByPackage: map[string]vcs.OriginInfoByURL{ "hello": { @@ -247,7 +245,6 @@ func Test_upDevel(t *testing.T) { finalLen: 1, args: args{ cached: vcs.InfoStore{ - Runner: config.Runtime.CmdRunner, CmdBuilder: config.Runtime.CmdBuilder, OriginsByPackage: map[string]vcs.OriginInfoByURL{ "hello": { @@ -267,7 +264,7 @@ func Test_upDevel(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - config.Runtime.CmdRunner.(*MockRunner).t = t + config.Runtime.CmdBuilder.(*exe.CmdBuilder).Runner.(*MockRunner).t = t got := UpDevel(tt.args.remote, tt.args.aurdata, &tt.args.cached) assert.ElementsMatch(t, tt.want.Up, got.Up) assert.Equal(t, tt.finalLen, len(tt.args.cached.OriginsByPackage)) diff --git a/pkg/vcs/vcs.go b/pkg/vcs/vcs.go index 4bfb57a9..561984fb 100644 --- a/pkg/vcs/vcs.go +++ b/pkg/vcs/vcs.go @@ -20,7 +20,6 @@ import ( type InfoStore struct { OriginsByPackage map[string]OriginInfoByURL FilePath string - Runner exe.Runner CmdBuilder exe.GitCmdBuilder } @@ -42,12 +41,11 @@ type OriginInfo struct { SHA string `json:"sha"` } -func NewInfoStore(filePath string, runner exe.Runner, cmdBuilder exe.GitCmdBuilder) *InfoStore { +func NewInfoStore(filePath string, cmdBuilder exe.GitCmdBuilder) *InfoStore { infoStore := &InfoStore{ CmdBuilder: cmdBuilder, FilePath: filePath, OriginsByPackage: map[string]OriginInfoByURL{}, - Runner: runner, } return infoStore @@ -59,7 +57,7 @@ func (v *InfoStore) getCommit(url, branch string, protocols []string) string { protocol := protocols[len(protocols)-1] cmd := v.CmdBuilder.BuildGitCmd("", "ls-remote", protocol+"://"+url, branch) - stdout, _, err := v.Runner.Capture(cmd, 5) + stdout, _, err := v.CmdBuilder.Capture(cmd, 5) if err != nil { if exiterr, ok := err.(*exec.ExitError); ok && exiterr.ExitCode() == 128 { text.Warnln(gotext.Get("devel check for package failed: '%s' encountered an error", cmd.String())) diff --git a/pkg/vcs/vcs_test.go b/pkg/vcs/vcs_test.go index 9068b222..c6497afd 100644 --- a/pkg/vcs/vcs_test.go +++ b/pkg/vcs/vcs_test.go @@ -55,7 +55,6 @@ func TestParsing(t *testing.T) { func TestNewInfoStore(t *testing.T) { type args struct { filePath string - runner exe.Runner cmdBuilder *exe.CmdBuilder } tests := []struct { @@ -66,18 +65,16 @@ func TestNewInfoStore(t *testing.T) { name: "normal", args: args{ "/tmp/a.json", - &exe.OSRunner{}, - &exe.CmdBuilder{GitBin: "git", GitFlags: []string{"--a", "--b"}}, + &exe.CmdBuilder{GitBin: "git", GitFlags: []string{"--a", "--b"}, Runner: &exe.OSRunner{}}, }, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - got := NewInfoStore(tt.args.filePath, tt.args.runner, tt.args.cmdBuilder) + got := NewInfoStore(tt.args.filePath, tt.args.cmdBuilder) assert.NotNil(t, got) assert.Equal(t, []string{"--a", "--b"}, got.CmdBuilder.(*exe.CmdBuilder).GitFlags) assert.Equal(t, tt.args.cmdBuilder, got.CmdBuilder) - assert.Equal(t, tt.args.runner, got.Runner) assert.Equal(t, "/tmp/a.json", got.FilePath) }) } @@ -102,7 +99,6 @@ func (r *MockRunner) Capture(cmd *exec.Cmd, timeout int64) (stdout, stderr strin func TestInfoStore_NeedsUpdate(t *testing.T) { type fields struct { - Runner exe.Runner CmdBuilder *exe.CmdBuilder } type args struct { @@ -123,10 +119,9 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { SHA: "991c5b4146fd27f4aacf4e3111258a848934aaa1", }, }}, fields: fields{ - Runner: &MockRunner{ + CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}, Runner: &MockRunner{ Returned: []string{"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HEAD"}, - }, - CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}}, + }}, }, want: true, }, @@ -144,13 +139,12 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { SHA: "991c5b4146fd27f4aacf4e3111258a848934aaa1", }, }}, fields: fields{ - Runner: &MockRunner{ + CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}, Runner: &MockRunner{ Returned: []string{ "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HEAD", "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HEAD", }, - }, - CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}}, + }}, }, want: true, }, @@ -163,10 +157,9 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { SHA: "991c5b4146fd27f4aacf4e3111258a848934aaa1", }, }}, fields: fields{ - Runner: &MockRunner{ + CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}, Runner: &MockRunner{ Returned: []string{"991c5b4146fd27f4aacf4e3111258a848934aaa1 HEAD"}, - }, - CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}}, + }}, }, want: false, }, @@ -179,10 +172,9 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { SHA: "991c5b4146fd27f4aacf4e3111258a848934aaa1", }, }}, fields: fields{ - Runner: &MockRunner{ + CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}, Runner: &MockRunner{ Returned: []string{"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}, - }, - CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}}, + }}, }, want: false, }, @@ -195,10 +187,12 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { SHA: "991c5b4146fd27f4aacf4e3111258a848934aaa1", }, }}, fields: fields{ - Runner: &MockRunner{ - Returned: []string{"error"}, + CmdBuilder: &exe.CmdBuilder{ + GitBin: "git", GitFlags: []string{""}, + Runner: &MockRunner{ + Returned: []string{"error"}, + }, }, - CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}}, }, want: false, }, @@ -211,10 +205,9 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { SHA: "991c5b4146fd27f4aacf4e3111258a848934aaa1", }, }}, fields: fields{ - Runner: &MockRunner{ + CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}, Runner: &MockRunner{ Returned: []string{"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"}, - }, - CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}}, + }}, }, want: false, }, @@ -222,7 +215,6 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { v := &InfoStore{ - Runner: tt.fields.Runner, CmdBuilder: tt.fields.CmdBuilder, } got := v.NeedsUpdate(tt.args.infos) @@ -234,7 +226,6 @@ func TestInfoStore_NeedsUpdate(t *testing.T) { func TestInfoStore_Update(t *testing.T) { type fields struct { OriginsByPackage map[string]OriginInfoByURL - Runner exe.Runner CmdBuilder *exe.CmdBuilder } type args struct { @@ -254,8 +245,10 @@ func TestInfoStore_Update(t *testing.T) { }, fields: fields{ OriginsByPackage: make(map[string]OriginInfoByURL), - CmdBuilder: &exe.CmdBuilder{GitBin: "git", GitFlags: []string{""}}, - Runner: &MockRunner{Returned: []string{"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HEAD"}}, + CmdBuilder: &exe.CmdBuilder{ + GitBin: "git", GitFlags: []string{""}, + Runner: &MockRunner{Returned: []string{"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa HEAD"}}, + }, }, }, } @@ -269,7 +262,6 @@ func TestInfoStore_Update(t *testing.T) { v := &InfoStore{ OriginsByPackage: tt.fields.OriginsByPackage, FilePath: file.Name(), - Runner: tt.fields.Runner, CmdBuilder: tt.fields.CmdBuilder, } var mux sync.Mutex diff --git a/query.go b/query.go index 0988f0d4..bc0fec31 100644 --- a/query.go +++ b/query.go @@ -217,7 +217,7 @@ func syncInfo(cmdArgs *parser.Arguments, pkgS []string, dbExecutor db.Executor) arguments := cmdArgs.Copy() arguments.ClearTargets() arguments.AddTarget(repoS...) - err = config.Runtime.CmdRunner.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( + err = config.Runtime.CmdBuilder.Show(config.Runtime.CmdBuilder.BuildPacmanCmd( cmdArgs, config.Runtime.Mode, settings.NoConfirm)) if err != nil { diff --git a/vcs.go b/vcs.go index 50d5f800..7fdf010b 100644 --- a/vcs.go +++ b/vcs.go @@ -47,7 +47,7 @@ func createDevelDB(config *settings.Configuration, dbExecutor db.Executor) error len(toSkipSlice), len(bases), text.Cyan(strings.Join(toSkipSlice, ", ")))) } - if _, errA := download.AURPKGBUILDRepos(config.Runtime.CmdRunner, + if _, errA := download.AURPKGBUILDRepos( config.Runtime.CmdBuilder, targets, config.AURURL, config.BuildDir, false); errA != nil { return err }