yay.go 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. package main
  2. import (
  3. "fmt"
  4. "os"
  5. )
  6. var version string
  7. // PacmanConf describes the default pacman config file
  8. const PacmanConf string = "/etc/pacman.conf"
  9. // BuildDir is the root for package building
  10. const BuildDir string = "/tmp/yaytmp/"
  11. // SearchMode is search without numbers.
  12. const SearchMode int = -1
  13. func operation() (operation string, err error) {
  14. if len(os.Args) < 2 {
  15. return "noop", fmt.Errorf("No operation specified.")
  16. }
  17. for _, arg := range os.Args[1:] {
  18. if arg[0] == '-' && arg[1] != '-' {
  19. return arg, nil
  20. }
  21. }
  22. return "yogurt", nil
  23. }
  24. func packages() ([]string, error) {
  25. var ps []string
  26. for _, arg := range os.Args[1:] {
  27. if arg[0] != '-' {
  28. ps = append(ps, arg)
  29. }
  30. }
  31. return ps, nil
  32. }
  33. func flags() (fs []string, err error) {
  34. for _, arg := range os.Args[1:] {
  35. if arg[0] == '-' && arg[1] == '-' {
  36. fs = append(fs, arg)
  37. }
  38. }
  39. return
  40. }
  41. func main() {
  42. var err error
  43. conf, err := readConfig(PacmanConf)
  44. op, err := operation()
  45. if err != nil {
  46. fmt.Println(err)
  47. os.Exit(1)
  48. }
  49. pkgs, _ := packages()
  50. flag, _ := flags()
  51. switch op {
  52. case "-Qstats":
  53. err = stats(&conf)
  54. case "-Ss":
  55. for _, pkg := range pkgs {
  56. err = searchMode(pkg, &conf)
  57. }
  58. case "-S":
  59. err = InstallPackage(pkgs, &conf, flag)
  60. case "-Syu", "-Suy":
  61. err = updateAndInstall(&conf, flag)
  62. case "yogurt":
  63. for _, pkg := range pkgs {
  64. err = searchAndInstall(pkg, &conf, flag)
  65. }
  66. default:
  67. err = passToPacman(op, pkgs, flag)
  68. }
  69. if err != nil {
  70. fmt.Println(err)
  71. os.Exit(1)
  72. }
  73. }