yay.go 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package main
  2. import (
  3. "bufio"
  4. "errors"
  5. "fmt"
  6. "os"
  7. "strconv"
  8. "strings"
  9. )
  10. // PacmanBin describes the default installation point of pacman
  11. const PacmanBin string = "/usr/bin/pacman"
  12. // MakepkgBin describes the default installation point of makepkg command
  13. const MakepkgBin string = "/usr/bin/makepkg"
  14. // TarBin describes the default installation point of tar command
  15. // Probably will replace untar with code solution
  16. const TarBin string = "/usr/bin/tar"
  17. // SearchMode is search without numbers
  18. const SearchMode int = -1
  19. // BuildDir is the root for package building
  20. const BuildDir string = "/tmp/yaytmp/"
  21. // BaseURL givers the AUR default address
  22. const BaseURL string = "https://aur.archlinux.org"
  23. // Editor gives the default system editor, uses vi in last case
  24. var Editor = "vi"
  25. func getNums() (numbers []int, err error) {
  26. var numberString string
  27. fmt.Printf("\x1B[32m%s\033[0m\nNumbers:", "Type numbers to install. Separate each number with a space.")
  28. reader := bufio.NewReader(os.Stdin)
  29. numberString, err = reader.ReadString('\n')
  30. if err != nil {
  31. fmt.Println(err)
  32. return
  33. }
  34. result := strings.Fields(numberString)
  35. var num int
  36. for _, numS := range result {
  37. num, err = strconv.Atoi(numS)
  38. if err != nil {
  39. fmt.Println(err)
  40. return
  41. }
  42. numbers = append(numbers, num)
  43. }
  44. return
  45. }
  46. func defaultMode(pkg string) (err error) {
  47. aurRes, err := searchAurPackages(pkg, 0)
  48. repoRes, err := SearchPackages(pkg)
  49. if err != nil {
  50. return
  51. }
  52. if repoRes.Resultcount == 0 && aurRes.Resultcount == 0 {
  53. return errors.New("No Packages match search")
  54. }
  55. repoRes.printSearch(0)
  56. err = aurRes.printSearch(repoRes.Resultcount)
  57. nums, err := getNums()
  58. if err != nil {
  59. return
  60. }
  61. err = installnumArray(nums, aurRes, repoRes)
  62. if err != nil {
  63. return
  64. }
  65. return
  66. }
  67. func searchMode(pkg string) (err error) {
  68. aur, err := searchAurPackages(pkg, SearchMode)
  69. repo, err := SearchPackages(pkg)
  70. if err != nil {
  71. return err
  72. }
  73. aur.printSearch(SearchMode)
  74. repo.printSearch(SearchMode)
  75. return nil
  76. }
  77. func main() {
  78. var err error
  79. if os.Getenv("EDITOR") != "" {
  80. Editor = os.Getenv("EDITOR")
  81. }
  82. if os.Args[1] == "-Ss" {
  83. err = searchMode(strings.Join(os.Args[3:], " "))
  84. } else if os.Args[1] == "-S" {
  85. err = InstallPackage(os.Args[2], os.Args[3:]...)
  86. } else {
  87. err = defaultMode(os.Args[1])
  88. }
  89. if err != nil {
  90. fmt.Println(err)
  91. os.Exit(1)
  92. }
  93. }