mirror of
https://github.com/EnumeratedDev/bpm-utils.git
synced 2026-09-16 02:56:11 +00:00
bpm-repo: recognize split packages
This commit is contained in:
+34
-5
@@ -543,7 +543,7 @@ func compileAllPackagesFunc(repo string) {
|
|||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, pkg := range pkgsMap {
|
for _, pkg := range pkgs {
|
||||||
if mark, _ := marked[pkg.Name]; mark != 2 {
|
if mark, _ := marked[pkg.Name]; mark != 2 {
|
||||||
visit(pkg)
|
visit(pkg)
|
||||||
}
|
}
|
||||||
@@ -558,15 +558,44 @@ func compileAllPackagesFunc(repo string) {
|
|||||||
|
|
||||||
// Check if source database entry is not synced
|
// Check if source database entry is not synced
|
||||||
if sourceDatabase != nil {
|
if sourceDatabase != nil {
|
||||||
if sourcePkgInfo, ok := sourceDatabase.Entries[pkgInfo.Name]; !ok || sourcePkgInfo.PackageInfo.GetFullVersion() != pkgInfo.GetFullVersion() {
|
if len(pkgInfo.SplitPackages) != 0 {
|
||||||
skip = false
|
sourcePkgInfo, ok := sourceDatabase.Entries[pkgInfo.Name]
|
||||||
|
if ok {
|
||||||
|
hasSplitPkg := func(name string) bool {
|
||||||
|
return slices.ContainsFunc(sourcePkgInfo.PackageInfo.SplitPackages, func(splitPkg *bpmutilsshared.PackageInfo) bool {
|
||||||
|
return name == splitPkg.Name
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
for _, splitPkg := range pkgInfo.SplitPackages {
|
||||||
|
if !hasSplitPkg(splitPkg.Name) || sourcePkgInfo.PackageInfo.GetFullVersion() != pkgInfo.GetFullVersion() {
|
||||||
|
skip = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
skip = false
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if sourcePkgInfo, ok := sourceDatabase.Entries[pkgInfo.Name]; !ok || sourcePkgInfo.PackageInfo.GetFullVersion() != pkgInfo.GetFullVersion() {
|
||||||
|
skip = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check if binary database entry is not synced
|
// Check if binary database entry is not synced
|
||||||
if binaryDatabase != nil {
|
if binaryDatabase != nil {
|
||||||
if binaryPkgInfo, ok := binaryDatabase.Entries[pkgInfo.Name]; !ok || binaryPkgInfo.PackageInfo.GetFullVersion() != pkgInfo.GetFullVersion() {
|
if len(pkgInfo.SplitPackages) != 0 {
|
||||||
skip = false
|
for _, splitPkg := range pkgInfo.SplitPackages {
|
||||||
|
if binaryPkgInfo, ok := binaryDatabase.Entries[splitPkg.Name]; !ok || binaryPkgInfo.PackageInfo.GetFullVersion() != pkgInfo.GetFullVersion() {
|
||||||
|
skip = false
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if binaryPkgInfo, ok := binaryDatabase.Entries[pkgInfo.Name]; !ok || binaryPkgInfo.PackageInfo.GetFullVersion() != pkgInfo.GetFullVersion() {
|
||||||
|
skip = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user