Skip to content

Commit 24ab7b8

Browse files
committed
fix package.json decoding edge case
1 parent d280201 commit 24ab7b8

File tree

1 file changed

+21
-3
lines changed

1 file changed

+21
-3
lines changed

Sources/PackageMetadata/Manifests/Packages/PackageNode.Dependency.Resolvable (ext).swift

Lines changed: 21 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,11 @@ extension PackageNode.Dependency.Resolvable:JSONObjectDecodable
1515
{
1616
case local
1717
case remote
18+
enum Remote:String
19+
{
20+
// appears when dumping tools version 5.1 manifest with 5.9 toolchain
21+
case urlString
22+
}
1823
}
1924

2025
case requirement
@@ -84,9 +89,22 @@ extension PackageNode.Dependency.Resolvable:JSONObjectDecodable
8489
with: \.value))
8590

8691
case .remote:
87-
return .remote(url: try json.decode(
88-
as: JSON.SingleElementRepresentation<String>.self,
89-
with: \.value))
92+
let json:JSON.Array = try .init(json: json.value)
93+
try json.shape.expect(count: 1)
94+
95+
let url:String
96+
do
97+
{
98+
url = try json[0].decode()
99+
}
100+
catch
101+
{
102+
url = try json[0].decode(using: CodingKey.Location.Remote.self)
103+
{
104+
try $0[.urlString].decode()
105+
}
106+
}
107+
return .remote(url: url)
90108
}
91109
})
92110
}

0 commit comments

Comments
 (0)