high_level.go 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package ialpm
  2. import (
  3. alpm "github.com/Jguer/go-alpm/v2"
  4. "github.com/Jguer/yay/v12/pkg/text"
  5. )
  6. // GetPackageNamesBySource returns package names with and without correspondence in SyncDBS respectively.
  7. func (ae *AlpmExecutor) getPackageNamesBySource() {
  8. if ae.installedRemotePkgMap == nil {
  9. ae.installedRemotePkgMap = map[string]alpm.IPackage{}
  10. }
  11. for _, localpkg := range ae.LocalPackages() {
  12. pkgName := localpkg.Name()
  13. if ae.SyncPackage(pkgName) != nil {
  14. ae.installedSyncPkgNames = append(ae.installedSyncPkgNames, pkgName)
  15. } else {
  16. ae.installedRemotePkgNames = append(ae.installedRemotePkgNames, pkgName)
  17. ae.installedRemotePkgMap[pkgName] = localpkg
  18. }
  19. }
  20. ae.log.Debugln("populating db executor package caches.",
  21. "sync_len", len(ae.installedSyncPkgNames), "remote_len", len(ae.installedRemotePkgNames))
  22. }
  23. func (ae *AlpmExecutor) InstalledRemotePackages() map[string]alpm.IPackage {
  24. if ae.installedRemotePkgMap == nil {
  25. ae.getPackageNamesBySource()
  26. }
  27. return ae.installedRemotePkgMap
  28. }
  29. func (ae *AlpmExecutor) InstalledRemotePackageNames() []string {
  30. if ae.installedRemotePkgNames == nil {
  31. ae.getPackageNamesBySource()
  32. }
  33. return ae.installedRemotePkgNames
  34. }
  35. func (ae *AlpmExecutor) InstalledSyncPackageNames() []string {
  36. if ae.installedSyncPkgNames == nil {
  37. ae.getPackageNamesBySource()
  38. }
  39. return ae.installedSyncPkgNames
  40. }
  41. func (ae *AlpmExecutor) SetLogger(logger *text.Logger) {
  42. ae.log = logger
  43. }