yay.go 1.6 KB

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