mirror of
https://github.com/GayPizzaSpecifications/darwin-apk.git
synced 2025-08-04 05:51:31 +00:00
Resolve highest priority package provider
This commit is contained in:
@ -24,17 +24,24 @@ public extension ApkIndex {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func resolve(requirement: ApkVersionRequirement) -> ApkIndexPackage? {
|
func resolve(requirement: ApkVersionRequirement) -> ApkIndexPackage? {
|
||||||
self.packages.first { pkg in
|
self.packages.filter { pkg in
|
||||||
return (pkg.name == requirement.name && requirement.versionSpec.satisfied(by: pkg.version))
|
(pkg.name == requirement.name && requirement.versionSpec.satisfied(by: pkg.version))
|
||||||
|| pkg.provides.contains(where: { $0.satisfies(requirement) })
|
|| pkg.provides.contains(where: { $0.satisfies(requirement) })
|
||||||
}
|
}.max()
|
||||||
}
|
}
|
||||||
|
|
||||||
func resolveIndex(requirement: ApkVersionRequirement) -> Index? {
|
func resolveIndex(requirement: ApkVersionRequirement) -> Index? {
|
||||||
self.packages.firstIndex { pkg in
|
self.packages.enumerated().lazy.filter { index, pkg in
|
||||||
return (pkg.name == requirement.name && requirement.versionSpec.satisfied(by: pkg.version))
|
return (pkg.name == requirement.name && requirement.versionSpec.satisfied(by: pkg.version))
|
||||||
|| pkg.provides.contains(where: { $0.satisfies(requirement) })
|
|| pkg.provides.contains(where: { $0.satisfies(requirement) })
|
||||||
|
}.max { $0.element < $1.element }?.offset
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ApkIndexPackage: Comparable {
|
||||||
|
public static func < (lhs: Self, rhs: Self) -> Bool {
|
||||||
|
// Prefer highest declared provider priority
|
||||||
|
lhs.providerPriority ?? 0 < rhs.providerPriority ?? 0
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user