base.go 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package dep
  2. import (
  3. aur "github.com/Jguer/yay/v11/pkg/query"
  4. "github.com/Jguer/yay/v11/pkg/stringset"
  5. )
  6. // Base is an AUR base package.
  7. type Base []*aur.Pkg
  8. // Pkgbase returns the first base package.
  9. func (b Base) Pkgbase() string {
  10. return b[0].PackageBase
  11. }
  12. // Version returns the first base package version.
  13. func (b Base) Version() string {
  14. return b[0].Version
  15. }
  16. // URLPath returns the first base package URL.
  17. func (b Base) URLPath() string {
  18. return b[0].URLPath
  19. }
  20. func (b Base) AnyIsInSet(set stringset.StringSet) bool {
  21. for _, pkg := range b {
  22. if set.Get(pkg.Name) {
  23. return true
  24. }
  25. }
  26. return false
  27. }
  28. // Packages foo and bar from a pkgbase named base would print like so:
  29. // base (foo bar).
  30. func (b Base) String() string {
  31. pkg := b[0]
  32. str := pkg.PackageBase
  33. if len(b) > 1 || pkg.PackageBase != pkg.Name {
  34. str2 := " ("
  35. for _, split := range b {
  36. str2 += split.Name + " "
  37. }
  38. str2 = str2[:len(str2)-1] + ")"
  39. str += str2
  40. }
  41. return str
  42. }
  43. func GetBases(pkgs []aur.Pkg) []Base {
  44. basesMap := make(map[string]Base)
  45. for i := range pkgs {
  46. pkg := &pkgs[i]
  47. basesMap[pkg.PackageBase] = append(basesMap[pkg.PackageBase], pkg)
  48. }
  49. bases := make([]Base, 0, len(basesMap))
  50. for _, base := range basesMap {
  51. bases = append(bases, base)
  52. }
  53. return bases
  54. }