Add requirement-based resolution to index

This commit is contained in:
2025-07-06 18:32:15 +10:00
parent 58d8e648b9
commit 710f0970c5
4 changed files with 73 additions and 2 deletions

View File

@ -30,6 +30,51 @@ internal extension ApkVersionSpecification {
return false
}
}
func satisfied(by version: String) -> Bool {
switch self {
case .any:
//return true
return ApkVersionCompare.validate(version)
case .constraint(_ , let op, let requiredVersion):
switch ApkVersionCompare.compare(version, requiredVersion, mode: op.isFuzzy ? .fuzzy : .normal) {
case .equal: return op.isEqual
case .greater: return op.isGreater
case .less: return op.isLess
default: return false
}
}
}
}
internal extension ApkVersionSpecification.Operator {
@inlinable var isFuzzy: Bool {
switch self {
case .fuzzyEquals, .lessFuzzy, .greaterFuzzy: return true
default: return false
}
}
@inlinable var isEqual: Bool {
switch self {
case .equals, .fuzzyEquals, .greaterEqual, .lessEqual, .greaterFuzzy, .lessFuzzy: true
default: false
}
}
@inlinable var isGreater: Bool {
switch self {
case .greater, .greaterEqual, .greaterFuzzy: true
default: false
}
}
@inlinable var isLess: Bool {
switch self {
case .less, .lessEqual, .lessFuzzy: true
default: false
}
}
}
extension ApkVersionSpecification.Operator: CustomStringConvertible {