query.go 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package main
  2. import (
  3. "fmt"
  4. "github.com/jguer/yay/aur"
  5. pac "github.com/jguer/yay/pacman"
  6. "github.com/jguer/yay/util"
  7. )
  8. // SyncSearch presents a query to the local repos and to the AUR.
  9. func SyncSearch(pkgS []string) (err error) {
  10. aq, _, err := aur.Search(pkgS, true)
  11. if err != nil {
  12. return err
  13. }
  14. pq, _, err := pac.Search(pkgS)
  15. if err != nil {
  16. return err
  17. }
  18. if util.SortMode == util.BottomUp {
  19. aq.PrintSearch(0)
  20. pq.PrintSearch()
  21. } else {
  22. pq.PrintSearch()
  23. aq.PrintSearch(0)
  24. }
  25. return nil
  26. }
  27. // SyncInfo serves as a pacman -Si for repo packages and AUR packages.
  28. func SyncInfo(pkgS []string, flags []string) (err error) {
  29. aurS, repoS, err := pac.PackageSlices(pkgS)
  30. if err != nil {
  31. return
  32. }
  33. q, _, err := aur.MultiInfo(aurS)
  34. if err != nil {
  35. fmt.Println(err)
  36. }
  37. for _, aurP := range q {
  38. aurP.PrintInfo()
  39. }
  40. if len(repoS) != 0 {
  41. err = PassToPacman("-Si", repoS, flags)
  42. }
  43. return
  44. }
  45. // LocalStatistics returns installed packages statistics.
  46. func LocalStatistics(version string) error {
  47. info, err := pac.Statistics()
  48. if err != nil {
  49. return err
  50. }
  51. foreignS, foreign, _ := pac.ForeignPackages()
  52. fmt.Printf("\n Yay version r%s\n", version)
  53. fmt.Println("\x1B[1;34m===========================================\x1B[0m")
  54. fmt.Printf("\x1B[1;32mTotal installed packages: \x1B[0;33m%d\x1B[0m\n", info.Totaln)
  55. fmt.Printf("\x1B[1;32mTotal foreign installed packages: \x1B[0;33m%d\x1B[0m\n", foreign)
  56. fmt.Printf("\x1B[1;32mExplicitly installed packages: \x1B[0;33m%d\x1B[0m\n", info.Expln)
  57. fmt.Printf("\x1B[1;32mTotal Size occupied by packages: \x1B[0;33m%s\x1B[0m\n", size(info.TotalSize))
  58. fmt.Println("\x1B[1;34m===========================================\x1B[0m")
  59. fmt.Println("\x1B[1;32mTen biggest packages\x1B[0m")
  60. pac.BiggestPackages()
  61. fmt.Println("\x1B[1;34m===========================================\x1B[0m")
  62. keys := make([]string, len(foreignS))
  63. i := 0
  64. for k := range foreignS {
  65. keys[i] = k
  66. i++
  67. }
  68. q, _, err := aur.MultiInfo(keys)
  69. if err != nil {
  70. return err
  71. }
  72. for _, res := range q {
  73. if res.Maintainer == "" {
  74. fmt.Printf("\x1b[1;31;40mWarning: \x1B[1;33;40m%s\x1b[0;37;40m is orphaned.\x1b[0m\n", res.Name)
  75. }
  76. if res.OutOfDate != 0 {
  77. fmt.Printf("\x1b[1;31;40mWarning: \x1B[1;33;40m%s\x1b[0;37;40m is out-of-date in AUR.\x1b[0m\n", res.Name)
  78. }
  79. }
  80. return nil
  81. }