args.go 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. package settings
  2. import (
  3. "strconv"
  4. "strings"
  5. "github.com/Jguer/yay/v10/pkg/settings/parser"
  6. )
  7. func (c *Configuration) ParseCommandLine(a *parser.Arguments) error {
  8. if err := a.Parse(); err != nil {
  9. return err
  10. }
  11. c.extractYayOptions(a)
  12. // Reload CmdBuilder
  13. c.Runtime.CmdBuilder = c.CmdBuilder(nil)
  14. return nil
  15. }
  16. func (c *Configuration) extractYayOptions(a *parser.Arguments) {
  17. for option, value := range a.Options {
  18. if c.handleOption(option, value.First()) {
  19. a.DelArg(option)
  20. }
  21. }
  22. c.Runtime.AURClient.BaseURL = strings.TrimRight(c.AURURL, "/") + "/rpc.php?"
  23. c.AURURL = strings.TrimRight(c.AURURL, "/")
  24. }
  25. func (c *Configuration) handleOption(option, value string) bool {
  26. switch option {
  27. case "aururl":
  28. c.AURURL = value
  29. case "save":
  30. c.Runtime.SaveConfig = true
  31. case "afterclean", "cleanafter":
  32. c.CleanAfter = true
  33. case "noafterclean", "nocleanafter":
  34. c.CleanAfter = false
  35. case "devel":
  36. c.Devel = true
  37. case "nodevel":
  38. c.Devel = false
  39. case "timeupdate":
  40. c.TimeUpdate = true
  41. case "notimeupdate":
  42. c.TimeUpdate = false
  43. case "topdown":
  44. c.SortMode = TopDown
  45. case "bottomup":
  46. c.SortMode = BottomUp
  47. case "completioninterval":
  48. n, err := strconv.Atoi(value)
  49. if err == nil {
  50. c.CompletionInterval = n
  51. }
  52. case "sortby":
  53. c.SortBy = value
  54. case "searchby":
  55. c.SearchBy = value
  56. case "noconfirm":
  57. NoConfirm = true
  58. case "config":
  59. c.PacmanConf = value
  60. case "redownload":
  61. c.ReDownload = "yes"
  62. case "redownloadall":
  63. c.ReDownload = "all"
  64. case "noredownload":
  65. c.ReDownload = "no"
  66. case "rebuild":
  67. c.ReBuild = "yes"
  68. case "rebuildall":
  69. c.ReBuild = "all"
  70. case "rebuildtree":
  71. c.ReBuild = "tree"
  72. case "norebuild":
  73. c.ReBuild = "no"
  74. case "batchinstall":
  75. c.BatchInstall = true
  76. case "nobatchinstall":
  77. c.BatchInstall = false
  78. case "answerclean":
  79. c.AnswerClean = value
  80. case "noanswerclean":
  81. c.AnswerClean = ""
  82. case "answerdiff":
  83. c.AnswerDiff = value
  84. case "noanswerdiff":
  85. c.AnswerDiff = ""
  86. case "answeredit":
  87. c.AnswerEdit = value
  88. case "noansweredit":
  89. c.AnswerEdit = ""
  90. case "answerupgrade":
  91. c.AnswerUpgrade = value
  92. case "noanswerupgrade":
  93. c.AnswerUpgrade = ""
  94. case "gpgflags":
  95. c.GpgFlags = value
  96. case "mflags":
  97. c.MFlags = value
  98. case "gitflags":
  99. c.GitFlags = value
  100. case "builddir":
  101. c.BuildDir = value
  102. case "absdir":
  103. c.ABSDir = value
  104. case "editor":
  105. c.Editor = value
  106. case "editorflags":
  107. c.EditorFlags = value
  108. case "makepkg":
  109. c.MakepkgBin = value
  110. case "makepkgconf":
  111. c.MakepkgConf = value
  112. case "nomakepkgconf":
  113. c.MakepkgConf = ""
  114. case "pacman":
  115. c.PacmanBin = value
  116. case "git":
  117. c.GitBin = value
  118. case "gpg":
  119. c.GpgBin = value
  120. case "sudo":
  121. c.SudoBin = value
  122. case "sudoflags":
  123. c.SudoFlags = value
  124. case "requestsplitn":
  125. n, err := strconv.Atoi(value)
  126. if err == nil && n > 0 {
  127. c.RequestSplitN = n
  128. }
  129. case "sudoloop":
  130. c.SudoLoop = true
  131. case "nosudoloop":
  132. c.SudoLoop = false
  133. case "provides":
  134. c.Provides = true
  135. case "noprovides":
  136. c.Provides = false
  137. case "pgpfetch":
  138. c.PGPFetch = true
  139. case "nopgpfetch":
  140. c.PGPFetch = false
  141. case "upgrademenu":
  142. c.UpgradeMenu = true
  143. case "noupgrademenu":
  144. c.UpgradeMenu = false
  145. case "cleanmenu":
  146. c.CleanMenu = true
  147. case "nocleanmenu":
  148. c.CleanMenu = false
  149. case "diffmenu":
  150. c.DiffMenu = true
  151. case "nodiffmenu":
  152. c.DiffMenu = false
  153. case "editmenu":
  154. c.EditMenu = true
  155. case "noeditmenu":
  156. c.EditMenu = false
  157. case "useask":
  158. c.UseAsk = true
  159. case "nouseask":
  160. c.UseAsk = false
  161. case "combinedupgrade":
  162. c.CombinedUpgrade = true
  163. case "nocombinedupgrade":
  164. c.CombinedUpgrade = false
  165. case "a", "aur":
  166. c.Runtime.Mode = parser.ModeAUR
  167. case "repo":
  168. c.Runtime.Mode = parser.ModeRepo
  169. case "removemake":
  170. c.RemoveMake = "yes"
  171. case "noremovemake":
  172. c.RemoveMake = "no"
  173. case "askremovemake":
  174. c.RemoveMake = "ask"
  175. default:
  176. return false
  177. }
  178. return true
  179. }