mirror of
https://github.com/EnumeratedDev/bpm.git
synced 2026-09-16 10:36:12 +00:00
Replace ResolveVirtualPackage function with GetDatabaseVirtualPackageEntry
This commit is contained in:
+3
-1
@@ -234,7 +234,9 @@ func showPackageInfo() {
|
|||||||
var entry *bpmlib.BPMDatabaseEntry
|
var entry *bpmlib.BPMDatabaseEntry
|
||||||
entry, _, err = bpmlib.GetDatabaseEntry(pkg)
|
entry, _, err = bpmlib.GetDatabaseEntry(pkg)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if entry = bpmlib.ResolveVirtualPackage(pkg); entry == nil {
|
if providers := bpmlib.GetDatabaseVirtualPackageEntry(pkg); len(providers) > 0 {
|
||||||
|
entry = providers[0]
|
||||||
|
} else {
|
||||||
log.Printf("Error: could not find package (%s) in any database\n", pkg)
|
log.Printf("Error: could not find package (%s) in any database\n", pkg)
|
||||||
exitCode = 1
|
exitCode = 1
|
||||||
return
|
return
|
||||||
|
|||||||
+7
-10
@@ -20,7 +20,7 @@ import (
|
|||||||
type BPMDatabase struct {
|
type BPMDatabase struct {
|
||||||
DatabaseVersion int `yaml:"database_version"`
|
DatabaseVersion int `yaml:"database_version"`
|
||||||
Entries map[string]*BPMDatabaseEntry `yaml:"entries"`
|
Entries map[string]*BPMDatabaseEntry `yaml:"entries"`
|
||||||
VirtualPackages map[string][]string
|
VirtualPackages map[string][]*BPMDatabaseEntry
|
||||||
Name string
|
Name string
|
||||||
Source string
|
Source string
|
||||||
}
|
}
|
||||||
@@ -59,7 +59,7 @@ func (db *configDatabase) ReadLocalDatabase() error {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Initialize struct values
|
// Initialize struct values
|
||||||
database.VirtualPackages = make(map[string][]string)
|
database.VirtualPackages = make(map[string][]*BPMDatabaseEntry)
|
||||||
database.Name = db.Name
|
database.Name = db.Name
|
||||||
database.Source = db.Source
|
database.Source = db.Source
|
||||||
|
|
||||||
@@ -105,13 +105,13 @@ func (db *configDatabase) ReadLocalDatabase() error {
|
|||||||
|
|
||||||
// Add virtual packages to database
|
// Add virtual packages to database
|
||||||
for _, p := range splitPkg.Provides {
|
for _, p := range splitPkg.Provides {
|
||||||
database.VirtualPackages[p] = append(database.VirtualPackages[p], splitPkg.Name)
|
database.VirtualPackages[p] = append(database.VirtualPackages[p], database.Entries[splitPkg.Name])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// Add virtual packages to database
|
// Add virtual packages to database
|
||||||
for _, p := range entry.Info.Provides {
|
for _, p := range entry.Info.Provides {
|
||||||
database.VirtualPackages[p] = append(database.VirtualPackages[p], entry.Info.Name)
|
database.VirtualPackages[p] = append(database.VirtualPackages[p], entry)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,15 +231,12 @@ func FindReplacement(pkg string) *BPMDatabaseEntry {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func ResolveVirtualPackage(vpkg string) *BPMDatabaseEntry {
|
func GetDatabaseVirtualPackageEntry(vpkg string) (providers []*BPMDatabaseEntry) {
|
||||||
for _, db := range BPMDatabases {
|
for _, db := range BPMDatabases {
|
||||||
if v, ok := db.VirtualPackages[vpkg]; ok {
|
providers = append(providers, db.VirtualPackages[vpkg]...)
|
||||||
slices.Sort(v)
|
|
||||||
return db.Entries[v[0]]
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return providers
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *BPMDatabase) FetchPackage(pkg string) (string, error) {
|
func (db *BPMDatabase) FetchPackage(pkg string) (string, error) {
|
||||||
|
|||||||
@@ -201,8 +201,9 @@ func resolvePackageDependenciesFromDatabase(resolved *[]pkgInstallationReason, u
|
|||||||
*unresolved = stringSliceRemove(*unresolved, resolvedVirtualPkg)
|
*unresolved = stringSliceRemove(*unresolved, resolvedVirtualPkg)
|
||||||
|
|
||||||
continue
|
continue
|
||||||
} else if entry = ResolveVirtualPackage(pkgIR.PkgName); entry != nil {
|
} else if providers := GetDatabaseVirtualPackageEntry(pkgIR.PkgName); len(providers) > 0 {
|
||||||
// Virtual package found in database
|
// Virtual package found in database
|
||||||
|
entry = providers[0]
|
||||||
} else {
|
} else {
|
||||||
// Virtual package not found
|
// Virtual package not found
|
||||||
if !slices.Contains(*unresolved, pkgIR.PkgName) {
|
if !slices.Contains(*unresolved, pkgIR.PkgName) {
|
||||||
|
|||||||
@@ -99,8 +99,8 @@ func InstallPackages(rootDir string, forceInstallationReason InstallationReason,
|
|||||||
pkgsNotFound = append(pkgsNotFound, pkg)
|
pkgsNotFound = append(pkgsNotFound, pkg)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
} else if e := ResolveVirtualPackage(pkg); e != nil {
|
} else if providers := GetDatabaseVirtualPackageEntry(pkg); len(providers) > 0 {
|
||||||
entry = e
|
entry = providers[0]
|
||||||
} else {
|
} else {
|
||||||
pkgsNotFound = append(pkgsNotFound, pkg)
|
pkgsNotFound = append(pkgsNotFound, pkg)
|
||||||
continue
|
continue
|
||||||
|
|||||||
Reference in New Issue
Block a user