actions.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. package main
  2. import (
  3. "bufio"
  4. "errors"
  5. "fmt"
  6. "github.com/Jguer/go-alpm"
  7. "github.com/Jguer/yay/aur"
  8. "os"
  9. "strconv"
  10. "strings"
  11. )
  12. func searchAndInstall(pkgName string, conf alpm.PacmanConfig, flags ...string) (err error) {
  13. var num int
  14. var numberString string
  15. aurRes, err := aur.Search(pkgName, true)
  16. repoRes, err := SearchPackages(pkgName, conf)
  17. if err != nil {
  18. return
  19. }
  20. if repoRes.Resultcount == 0 && aurRes.Resultcount == 0 {
  21. return errors.New("No Packages match search")
  22. }
  23. repoRes.printSearch(0)
  24. aurRes.PrintSearch(repoRes.Resultcount)
  25. fmt.Printf("\x1B[32m%s\033[0m\nNumbers:", "Type numbers to install. Separate each number with a space.")
  26. reader := bufio.NewReader(os.Stdin)
  27. numberString, err = reader.ReadString('\n')
  28. if err != nil {
  29. fmt.Println(err)
  30. return
  31. }
  32. var index int
  33. result := strings.Fields(numberString)
  34. for _, numS := range result {
  35. num, err = strconv.Atoi(numS)
  36. if err != nil {
  37. fmt.Println(err)
  38. continue
  39. }
  40. fmt.Println(num)
  41. // Install package
  42. if num > repoRes.Resultcount-1 {
  43. index = num - repoRes.Resultcount
  44. err = aurRes.Results[num-index].Install(BuildDir, conf, flags...)
  45. if err != nil {
  46. // Do not abandon program, we might still be able to install the rest
  47. fmt.Println(err)
  48. }
  49. } else {
  50. InstallPackage(repoRes.Results[num].Name, conf, flags...)
  51. }
  52. }
  53. return
  54. }
  55. func searchMode(pkg string, conf alpm.PacmanConfig) (err error) {
  56. _, err = aur.Search(pkg, true)
  57. if err != nil {
  58. return err
  59. }
  60. repo, err := SearchPackages(pkg, conf)
  61. if err != nil {
  62. return err
  63. }
  64. aur.printSearch(SearchMode)
  65. repo.printSearch(SearchMode)
  66. return nil
  67. }