yay.go 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. "github.com/jguer/yay"
  6. )
  7. func usage() {
  8. fmt.Println(`usage: yay <operation> [...]
  9. operations:
  10. yay {-h --help}
  11. yay {-V --version}
  12. yay {-D --database} <options> <package(s)>
  13. yay {-F --files} [options] [package(s)]
  14. yay {-Q --query} [options] [package(s)]
  15. yay {-R --remove} [options] <package(s)>
  16. yay {-S --sync} [options] [package(s)]
  17. yay {-T --deptest} [options] [package(s)]
  18. yay {-U --upgrade} [options] <file(s)>
  19. New operations:
  20. yay -Qstats - Displays system information
  21. `)
  22. }
  23. func parser() (op string, options []string, packages []string, err error) {
  24. if len(os.Args) < 2 {
  25. err = fmt.Errorf("no operation specified")
  26. return
  27. }
  28. for _, arg := range os.Args[1:] {
  29. if arg[0] == '-' && arg[1] != '-' {
  30. op = arg
  31. }
  32. if arg[0] == '-' && arg[1] == '-' {
  33. if arg == "--help" {
  34. op = arg
  35. }
  36. options = append(options, arg)
  37. }
  38. if arg[0] != '-' {
  39. packages = append(packages, arg)
  40. }
  41. }
  42. if op == "" {
  43. op = "yogurt"
  44. }
  45. return
  46. }
  47. func main() {
  48. op, options, pkgs, err := parser()
  49. if err != nil {
  50. fmt.Println(err)
  51. os.Exit(1)
  52. }
  53. switch op {
  54. case "-Qstats":
  55. err = yay.LocalStatistics()
  56. case "-Ss":
  57. for _, pkg := range pkgs {
  58. err = searchMode(pkg, &conf)
  59. }
  60. case "-S":
  61. err = InstallPackage(pkgs, &conf, options)
  62. case "-Syu", "-Suy":
  63. err = yay.Upgrade(options)
  64. case "yogurt":
  65. for _, pkg := range pkgs {
  66. err = yay.NumberMenu(pkg, &conf, options)
  67. break
  68. }
  69. case "--help", "-h":
  70. usage()
  71. default:
  72. err = passToPacman(op, pkgs, options)
  73. }
  74. if err != nil {
  75. fmt.Println(err)
  76. os.Exit(1)
  77. }
  78. }