filter.go 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. package query
  2. import (
  3. "github.com/leonelquinteros/gotext"
  4. "github.com/Jguer/go-alpm/v2"
  5. "github.com/Jguer/yay/v10/pkg/db"
  6. "github.com/Jguer/yay/v10/pkg/settings"
  7. "github.com/Jguer/yay/v10/pkg/text"
  8. )
  9. // GetPackageNamesBySource returns package names with and without correspondence in SyncDBS respectively
  10. func GetPackageNamesBySource(dbExecutor db.Executor) (local, remote []string, err error) {
  11. outer:
  12. for _, localpkg := range dbExecutor.LocalPackages() {
  13. for _, syncpkg := range dbExecutor.SyncPackages() {
  14. if localpkg.Name() == syncpkg.Name() {
  15. local = append(local, localpkg.Name())
  16. continue outer
  17. }
  18. }
  19. remote = append(remote, localpkg.Name())
  20. }
  21. return local, remote, err
  22. }
  23. // GetRemotePackages returns packages with no correspondence in SyncDBS.
  24. func GetRemotePackages(dbExecutor db.Executor) (
  25. remote []alpm.IPackage,
  26. remoteNames []string) {
  27. outer:
  28. for _, localpkg := range dbExecutor.LocalPackages() {
  29. for _, syncpkg := range dbExecutor.SyncPackages() {
  30. if localpkg.Name() == syncpkg.Name() {
  31. continue outer
  32. }
  33. }
  34. remote = append(remote, localpkg)
  35. remoteNames = append(remoteNames, localpkg.Name())
  36. }
  37. return remote, remoteNames
  38. }
  39. func RemoveInvalidTargets(targets []string, mode settings.TargetMode) []string {
  40. filteredTargets := make([]string, 0)
  41. for _, target := range targets {
  42. dbName, _ := text.SplitDBFromName(target)
  43. if dbName == "aur" && mode == settings.ModeRepo {
  44. text.Warnln(gotext.Get("%s: can't use target with option --repo -- skipping", text.Cyan(target)))
  45. continue
  46. }
  47. if dbName != "aur" && dbName != "" && mode == settings.ModeAUR {
  48. text.Warnln(gotext.Get("%s: can't use target with option --aur -- skipping", text.Cyan(target)))
  49. continue
  50. }
  51. filteredTargets = append(filteredTargets, target)
  52. }
  53. return filteredTargets
  54. }