Skip to content

Commit 1d7cbd4

Browse files
committed
[skip ci] Fix more bugs
1 parent da7a176 commit 1d7cbd4

File tree

1 file changed

+10
-8
lines changed

1 file changed

+10
-8
lines changed

convert-dependency-graph.swift

+10-8
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ struct PackageDependency: Codable {
77
let dependencies: [PackageDependency]
88
}
99

10-
struct SwiftPUrl: Codable, RawRepresentable {
10+
struct SwiftPUrl: Codable, RawRepresentable, Hashable {
1111
let scheme: String, type: String, source: String, name: String, version: String
1212

1313
var rawValue: String { "\(self.scheme):\(self.type)/\(self.source)/\(self.name)@\(self.version)" }
@@ -42,7 +42,7 @@ struct GithubDependencyGraph: Codable {
4242
self.relationship = relationship
4343
}
4444
}
45-
let name: String, file: File, resolved: [SwiftPUrl: Package]
45+
let name: String, file: File, resolved: [String: Package]
4646
}
4747
let version: Int, sha: String, ref: String, job: Job, detector: Detector,
4848
scanned: Date, manifests: [String: Manifest]
@@ -81,14 +81,16 @@ func main() {
8181
var resolved = [SwiftPUrl: GithubDependencyGraph.Manifest.Package]()
8282

8383
func handleDeps(_ dependencies: [PackageDependency]) {
84-
for dep in dependencies where !resolved.keys.contains(dep.identity) {
85-
handleDeps(dep.dependencies)
86-
guard !resolved.keys.contains(dep.identity) else { continue }
84+
for dep in dependencies {
8785
guard let url = URL(string: dep.url) else {
8886
fail("Invalid URL for package \(dep.identity)")
8987
}
90-
resolved[.init(with: url, version: dep.version)] = .init(
91-
package_url: .init(with: url, version: dep.version),
88+
let purl = SwiftPUrl(with: url, version: dep.version)
89+
guard !resolved.keys.contains(purl) else { continue }
90+
handleDeps(dep.dependencies)
91+
guard !resolved.keys.contains(purl) else { continue }
92+
resolved[purl] = .init(
93+
package_url: purl,
9294
dependencies: dep.dependencies.map {
9395
SwiftPUrl(with: URL(string: $0.url)!, version: $0.version).rawValue
9496
}.sorted(),
@@ -110,7 +112,7 @@ func main() {
110112
manifests: ["Package.resolved": .init(
111113
name: "Package.resolved",
112114
file: .init(source_location: "Package.resolved"),
113-
resolved: resolved
115+
resolved: .init(uniqueKeysWithValues: resolved.map { ($0.rawValue, $1) })
114116
)]
115117
)
116118

0 commit comments

Comments
 (0)