yay/pkg/settings/args.go
2021-09-08 22:28:08 +02:00

188 lines
3.7 KiB
Go

package settings
import (
"strconv"
"strings"
"github.com/Jguer/yay/v11/pkg/settings/parser"
)
func (c *Configuration) ParseCommandLine(a *parser.Arguments) error {
if err := a.Parse(); err != nil {
return err
}
c.extractYayOptions(a)
// Reload CmdBuilder
c.Runtime.CmdBuilder = c.CmdBuilder(nil)
return nil
}
func (c *Configuration) extractYayOptions(a *parser.Arguments) {
for option, value := range a.Options {
if c.handleOption(option, value.First()) {
a.DelArg(option)
}
}
c.Runtime.AURClient.BaseURL = strings.TrimRight(c.AURURL, "/") + "/rpc.php?"
c.AURURL = strings.TrimRight(c.AURURL, "/")
}
func (c *Configuration) handleOption(option, value string) bool {
switch option {
case "aururl":
c.AURURL = value
case "save":
c.Runtime.SaveConfig = true
case "afterclean", "cleanafter":
c.CleanAfter = true
case "noafterclean", "nocleanafter":
c.CleanAfter = false
case "devel":
c.Devel = true
case "nodevel":
c.Devel = false
case "timeupdate":
c.TimeUpdate = true
case "notimeupdate":
c.TimeUpdate = false
case "topdown":
c.SortMode = TopDown
case "bottomup":
c.SortMode = BottomUp
case "completioninterval":
n, err := strconv.Atoi(value)
if err == nil {
c.CompletionInterval = n
}
case "sortby":
c.SortBy = value
case "searchby":
c.SearchBy = value
case "noconfirm":
NoConfirm = true
case "config":
c.PacmanConf = value
case "redownload":
c.ReDownload = "yes"
case "redownloadall":
c.ReDownload = "all"
case "noredownload":
c.ReDownload = "no"
case "rebuild":
c.ReBuild = "yes"
case "rebuildall":
c.ReBuild = "all"
case "rebuildtree":
c.ReBuild = "tree"
case "norebuild":
c.ReBuild = "no"
case "batchinstall":
c.BatchInstall = true
case "nobatchinstall":
c.BatchInstall = false
case "answerclean":
c.AnswerClean = value
case "noanswerclean":
c.AnswerClean = ""
case "answerdiff":
c.AnswerDiff = value
case "noanswerdiff":
c.AnswerDiff = ""
case "answeredit":
c.AnswerEdit = value
case "noansweredit":
c.AnswerEdit = ""
case "answerupgrade":
c.AnswerUpgrade = value
case "noanswerupgrade":
c.AnswerUpgrade = ""
case "gpgflags":
c.GpgFlags = value
case "mflags":
c.MFlags = value
case "gitflags":
c.GitFlags = value
case "builddir":
c.BuildDir = value
case "editor":
c.Editor = value
case "editorflags":
c.EditorFlags = value
case "makepkg":
c.MakepkgBin = value
case "makepkgconf":
c.MakepkgConf = value
case "nomakepkgconf":
c.MakepkgConf = ""
case "pacman":
c.PacmanBin = value
case "git":
c.GitBin = value
case "gpg":
c.GpgBin = value
case "sudo":
c.SudoBin = value
case "sudoflags":
c.SudoFlags = value
case "requestsplitn":
n, err := strconv.Atoi(value)
if err == nil && n > 0 {
c.RequestSplitN = n
}
case "sudoloop":
c.SudoLoop = true
case "nosudoloop":
c.SudoLoop = false
case "provides":
c.Provides = true
case "noprovides":
c.Provides = false
case "pgpfetch":
c.PGPFetch = true
case "nopgpfetch":
c.PGPFetch = false
case "upgrademenu":
c.UpgradeMenu = true
case "noupgrademenu":
c.UpgradeMenu = false
case "cleanmenu":
c.CleanMenu = true
case "nocleanmenu":
c.CleanMenu = false
case "diffmenu":
c.DiffMenu = true
case "nodiffmenu":
c.DiffMenu = false
case "editmenu":
c.EditMenu = true
case "noeditmenu":
c.EditMenu = false
case "useask":
c.UseAsk = true
case "nouseask":
c.UseAsk = false
case "combinedupgrade":
c.CombinedUpgrade = true
case "nocombinedupgrade":
c.CombinedUpgrade = false
case "a", "aur":
c.Runtime.Mode = parser.ModeAUR
case "repo":
c.Runtime.Mode = parser.ModeRepo
case "removemake":
c.RemoveMake = "yes"
case "noremovemake":
c.RemoveMake = "no"
case "askremovemake":
c.RemoveMake = "ask"
default:
return false
}
return true
}