mirror of
				https://github.com/GayPizzaSpecifications/darwin-apk.git
				synced 2025-11-03 15:49:37 +00:00 
			
		
		
		
	Consolidate version stuff
This commit is contained in:
		@ -6,9 +6,9 @@
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
public struct ApkIndexDependency: Hashable, Sendable {
 | 
			
		||||
  let requirement: ApkRequirement
 | 
			
		||||
  let requirement: ApkVersionRequirement
 | 
			
		||||
 | 
			
		||||
  init(requirement: ApkRequirement) {
 | 
			
		||||
  init(requirement: ApkVersionRequirement) {
 | 
			
		||||
    self.requirement = requirement
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -4,9 +4,9 @@
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
public struct ApkIndexInstallIf: Hashable, Sendable {
 | 
			
		||||
  let requirement: ApkRequirement
 | 
			
		||||
  let requirement: ApkVersionRequirement
 | 
			
		||||
 | 
			
		||||
  init(requirement: ApkRequirement) {
 | 
			
		||||
  init(requirement: ApkVersionRequirement) {
 | 
			
		||||
    self.requirement = requirement
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -6,7 +6,7 @@
 | 
			
		||||
public struct ApkIndexProvides: Hashable, Sendable {
 | 
			
		||||
  let name: String
 | 
			
		||||
 | 
			
		||||
  init(requirement: ApkRequirement) {
 | 
			
		||||
  init(requirement: ApkVersionRequirement) {
 | 
			
		||||
    self.name = requirement.name
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -19,7 +19,7 @@ struct ApkIndexRequirementRef {
 | 
			
		||||
    self._graph!.pkgIndex.packages[self.packageID]
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  func satisfied(by other: ApkRequirement) -> Bool {
 | 
			
		||||
  func satisfied(by other: ApkVersionRequirement) -> Bool {
 | 
			
		||||
    true
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
@ -50,11 +50,11 @@ extension ApkIndexRequirementRef: CustomStringConvertible {
 | 
			
		||||
    }
 | 
			
		||||
    return switch self.constraint {
 | 
			
		||||
    case .dep(let version):
 | 
			
		||||
      "dep=\(ApkRequirement(name: package.name, spec: version))"
 | 
			
		||||
      "dep=\(ApkVersionRequirement(name: package.name, spec: version))"
 | 
			
		||||
    case .provision:
 | 
			
		||||
      "provides=\(package.name)"
 | 
			
		||||
    case .installIf(let version):
 | 
			
		||||
      "installIf=\(ApkRequirement(name: package.name, spec: version))"
 | 
			
		||||
      "installIf=\(ApkVersionRequirement(name: package.name, spec: version))"
 | 
			
		||||
    }
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -5,7 +5,7 @@
 | 
			
		||||
 | 
			
		||||
import Foundation
 | 
			
		||||
 | 
			
		||||
internal struct ApkRequirement: Hashable {
 | 
			
		||||
internal struct ApkVersionRequirement: Hashable {
 | 
			
		||||
  let name: String
 | 
			
		||||
  let versionSpec: ApkVersionSpecification
 | 
			
		||||
 | 
			
		||||
@ -51,7 +51,7 @@ internal struct ApkRequirement: Hashable {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extension ApkRequirement: CustomStringConvertible {
 | 
			
		||||
extension ApkVersionRequirement: CustomStringConvertible {
 | 
			
		||||
  var description: String {
 | 
			
		||||
    switch self.versionSpec {
 | 
			
		||||
    case .any: self.name
 | 
			
		||||
@ -61,7 +61,7 @@ extension ApkRequirement: CustomStringConvertible {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
extension ApkRequirement {
 | 
			
		||||
extension ApkVersionRequirement {
 | 
			
		||||
  enum ParseError: Error, LocalizedError {
 | 
			
		||||
    case brokenSpec
 | 
			
		||||
 | 
			
		||||
@ -75,7 +75,7 @@ extension ApkRequirement {
 | 
			
		||||
 | 
			
		||||
//MARK: - Private Implementation
 | 
			
		||||
 | 
			
		||||
fileprivate extension ApkRequirement {
 | 
			
		||||
fileprivate extension ApkVersionRequirement {
 | 
			
		||||
  struct ComparatorBits: OptionSet {
 | 
			
		||||
    let rawValue: UInt8
 | 
			
		||||
 | 
			
		||||
@ -91,7 +91,7 @@ fileprivate extension ApkRequirement {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fileprivate extension ApkVersionSpecification {
 | 
			
		||||
  init(_ bits: ApkRequirement.ComparatorBits, version: Substring) throws(ApkRequirement.ParseError) {
 | 
			
		||||
  init(_ bits: ApkVersionRequirement.ComparatorBits, version: Substring) throws(ApkVersionRequirement.ParseError) {
 | 
			
		||||
    if bits == [ .conflict ] {
 | 
			
		||||
      self = .conflict
 | 
			
		||||
    } else {
 | 
			
		||||
@ -107,7 +107,7 @@ fileprivate extension ApkVersionSpecification {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
fileprivate extension ApkVersionSpecification.Operator {
 | 
			
		||||
  init(_ bits: ApkRequirement.ComparatorBits) throws(ApkRequirement.ParseError) {
 | 
			
		||||
  init(_ bits: ApkVersionRequirement.ComparatorBits) throws(ApkVersionRequirement.ParseError) {
 | 
			
		||||
    self = switch bits.subtracting(.conflict) {
 | 
			
		||||
    case .equals:   .equals
 | 
			
		||||
    case .less:     .less
 | 
			
		||||
		Reference in New Issue
	
	Block a user