Add SudoBin and SudoFlags

This commit is contained in:
Pierre-Alain TORET 2019-03-19 22:10:58 +01:00 committed by morganamilo
parent 8d37981218
commit 6dd65a2df2
No known key found for this signature in database
GPG Key ID: 6FE9E7996B0B082E
5 changed files with 36 additions and 2 deletions

2
cmd.go
View File

@ -111,6 +111,8 @@ Permanent configuration options:
--batchinstall Build multiple AUR packages then install them together
--nobatchinstall Build and install each AUR package one by one
--sudo <file> sudo command to use
--sudoflags <flags> Pass arguments to sudo
--sudoloop Loop sudo calls in the background to avoid timeout
--nosudoloop Do not loop sudo calls in the background

View File

@ -61,6 +61,8 @@ type Configuration struct {
SearchBy string `json:"searchby"`
GitFlags string `json:"gitflags"`
RemoveMake string `json:"removemake"`
SudoBin string `json:"sudobin"`
SudoFlags string `json:"sudoflags"`
RequestSplitN int `json:"requestsplitn"`
SearchMode int `json:"-"`
SortMode int `json:"sortmode"`
@ -166,6 +168,8 @@ func defaultSettings() *Configuration {
TarBin: "bsdtar",
GitBin: "git",
GpgBin: "gpg",
SudoBin: "sudo",
SudoFlags: "",
TimeUpdate: false,
RequestSplitN: 150,
ReDownload: "no",
@ -211,6 +215,8 @@ func (config *Configuration) expandEnv() {
config.TarBin = os.ExpandEnv(config.TarBin)
config.GitBin = os.ExpandEnv(config.GitBin)
config.GpgBin = os.ExpandEnv(config.GpgBin)
config.SudoBin = os.ExpandEnv(config.SudoBin)
config.SudoFlags = os.ExpandEnv(config.SudoFlags)
config.ReDownload = os.ExpandEnv(config.ReDownload)
config.ReBuild = os.ExpandEnv(config.ReBuild)
config.AnswerClean = os.ExpandEnv(config.AnswerClean)

View File

@ -502,6 +502,19 @@ gpg is called by Yay. Arguments are split on whitespace before being
passed to gpg. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.
.TP
.B \-\-sudo <command>
The command to use for \fBsudo\fR calls. This can be a command in
\fBPATH\fR or an absolute path to the file.
The sudoloop is not guarantee to work with a custom \fBsudo\fR command.
.TP
.B \-\-sudoflags <flags>
Passes arguments to sudo. These flags get passed to every instance where
sudo is called by Yay. Arguments are split on whitespace before being
passed to sudo. Multiple arguments may be passed by supplying a space
separated list that is quoted by the shell.
.TP
.B \-\-sudoloop
Loop sudo calls in the background to prevent sudo from timing out during long

View File

@ -45,7 +45,9 @@ func sudoLoop() {
func updateSudo() {
for {
err := show(exec.Command("sudo", "-v"))
mSudoFlags := strings.Fields(config.SudoFlags)
mSudoFlags = append([]string{"-v"}, mSudoFlags...)
err := show(exec.Command(config.SudoBin, mSudoFlags...))
if err != nil {
fmt.Fprintln(os.Stderr, err)
} else {
@ -76,8 +78,11 @@ func waitLock() {
func passToPacman(args *arguments) *exec.Cmd {
argArr := make([]string, 0)
mSudoFlags := strings.Fields(config.SudoFlags)
if args.needRoot() {
argArr = append(argArr, "sudo")
argArr = append(argArr, config.SudoBin)
argArr = append(argArr, mSudoFlags...)
}
argArr = append(argArr, config.PacmanBin)

View File

@ -421,6 +421,8 @@ func isArg(arg string) bool {
case "tar":
case "git":
case "gpg":
case "sudo":
case "sudoflags":
case "requestsplitn":
case "sudoloop":
case "nosudoloop":
@ -558,6 +560,10 @@ func handleConfig(option, value string) bool {
config.GitBin = value
case "gpg":
config.GpgBin = value
case "sudo":
config.SudoBin = value
case "sudoflags":
config.SudoFlags = value
case "requestsplitn":
n, err := strconv.Atoi(value)
if err == nil && n > 0 {
@ -692,6 +698,8 @@ func hasParam(arg string) bool {
case "tar":
case "git":
case "gpg":
case "sudo":
case "sudoflags":
case "requestsplitn":
case "answerclean":
case "answerdiff":