@@ -34,6 +34,9 @@ public struct PackageReference {
3434 /// A package from a registry.
3535 case registry( PackageIdentity )
3636
37+ /// A prebuilt library provided by a toolchain
38+ case providedLibrary( AbsolutePath )
39+
3740 // FIXME: we should not need this once we migrate off URLs
3841 //@available(*, deprecated)
3942 public var locationString : String {
@@ -49,6 +52,8 @@ public struct PackageReference {
4952 case . registry( let identity) :
5053 // FIXME: this is a placeholder
5154 return identity. description
55+ case . providedLibrary( let path) :
56+ return path. pathString
5257 }
5358 }
5459
@@ -70,6 +75,8 @@ public struct PackageReference {
7075 return " remoteSourceControl \( url) "
7176 case . registry( let identity) :
7277 return " registry \( identity) "
78+ case . providedLibrary( let path) :
79+ return " library \( path) "
7380 }
7481 }
7582
@@ -124,6 +131,8 @@ public struct PackageReference {
124131 case . registry( let identity) :
125132 // FIXME: this is a placeholder
126133 self . deprecatedName = name ?? identity. description
134+ case . providedLibrary( let path) :
135+ self . deprecatedName = name ?? PackageIdentityParser . computeDefaultName ( fromPath: path)
127136 }
128137 }
129138
@@ -151,6 +160,10 @@ public struct PackageReference {
151160 public static func registry( identity: PackageIdentity ) -> PackageReference {
152161 PackageReference ( identity: identity, kind: . registry( identity) )
153162 }
163+
164+ public static func library( identity: PackageIdentity , path: AbsolutePath ) -> PackageReference {
165+ PackageReference ( identity: identity, kind: . providedLibrary( path) )
166+ }
154167}
155168
156169extension PackageReference : Equatable {
@@ -203,7 +216,7 @@ extension PackageReference: CustomStringConvertible {
203216
204217extension PackageReference . Kind : Encodable {
205218 private enum CodingKeys : String , CodingKey {
206- case root, fileSystem, localSourceControl, remoteSourceControl, registry
219+ case root, fileSystem, localSourceControl, remoteSourceControl, registry, providedLibrary
207220 }
208221
209222 public func encode( to encoder: Encoder ) throws {
@@ -224,6 +237,9 @@ extension PackageReference.Kind: Encodable {
224237 case . registry:
225238 var unkeyedContainer = container. nestedUnkeyedContainer ( forKey: . registry)
226239 try unkeyedContainer. encode ( self . isRoot)
240+ case . providedLibrary( let path) :
241+ var unkeyedContainer = container. nestedUnkeyedContainer ( forKey: . providedLibrary)
242+ try unkeyedContainer. encode ( path)
227243 }
228244 }
229245}
0 commit comments