diff --git a/cmd.go b/cmd.go index 38a96603..eb7abe31 100644 --- a/cmd.go +++ b/cmd.go @@ -266,15 +266,29 @@ cleanup: os.Exit(status) } +func sudoLoopBackground() { + updateSudo() + go sudoLoop() +} + func sudoLoop() { + for { + updateSudo() + time.Sleep(298 * time.Second) + } +} + + +func updateSudo() { for { cmd := exec.Command("sudo", "-v") cmd.Stdin, cmd.Stdout, cmd.Stderr = os.Stdin, os.Stdout, os.Stderr err := cmd.Run() if err != nil { fmt.Println(err) + } else { + break } - time.Sleep(298 * time.Second) } } @@ -292,7 +306,7 @@ func handleCmd() (err error) { } if config.SudoLoop == true && cmdArgs.needRoot() { - go sudoLoop() + sudoLoopBackground() } switch cmdArgs.op { @@ -656,9 +670,8 @@ func numberMenu(pkgS []string, flags []string) (err error) { repoI = removeListFromList(repoNI, repoI) if config.SudoLoop == true { - go sudoLoop() + sudoLoopBackground() } - arguments := makeArguments() arguments.addTarget(repoI...) arguments.addTarget(aurI...)