Skip to content

Commit 46073d3

Browse files
authored
[Collections] Dedupe package versions in GitHub metadata (#3504)
Motivation: Package metadata returned by GitHub API may contain duplicate entries for the same tag. e.g., https://github.com/vapor/postgres-nio releases 1.5.0 and 1.5.1. This causes `getPackageMetadata` API to crash. Modification: Dedupe versions/tags when we construct dictionary from GitHub package versions array.
1 parent 485caed commit 46073d3

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

Sources/PackageCollections/PackageCollections.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -549,7 +549,7 @@ public struct PackageCollections: PackageCollectionsProtocol {
549549
internal static func mergedPackageMetadata(package: Model.Package,
550550
basicMetadata: Model.PackageBasicMetadata?) -> Model.Package {
551551
// This dictionary contains recent releases and might not contain everything that's in package.versions.
552-
let basicVersionMetadata = basicMetadata.map { Dictionary(uniqueKeysWithValues: $0.versions.map { ($0.version, $0) }) } ?? [:]
552+
let basicVersionMetadata = basicMetadata.map { Dictionary($0.versions.map { ($0.version, $0) }, uniquingKeysWith: { first, _ in first }) } ?? [:]
553553
var versions = package.versions.map { packageVersion -> Model.Package.Version in
554554
let versionMetadata = basicVersionMetadata[packageVersion.version]
555555
return .init(version: packageVersion.version,

0 commit comments

Comments
 (0)