base.go 1.1 KB

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