Skip to content

Commit 6710dc4

Browse files
Merge pull request #11 from SwiftPackageIndex/support-Package.resolved-v2
Move extension to test-only
2 parents 3d1764e + d4ce78d commit 6710dc4

File tree

5 files changed

+55
-29
lines changed

5 files changed

+55
-29
lines changed
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// Copyright 2022 Dave Verwer, Sven A. Schmidt, and other contributors.
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS,
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
import Foundation
16+
17+
18+
extension Dictionary where Key == PackageId, Value == URL {
19+
subscript(caseInsensitive packageId: PackageId) -> URL? {
20+
first(where: { $0.key.lowercased() == packageId.lowercased() })?.value
21+
}
22+
}

Sources/ReleaseNotesCore/PackageResolved.swift

Lines changed: 0 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,6 @@ enum PackageResolved {
6161
}
6262

6363

64-
extension PackageResolved {
65-
var v1: V1? {
66-
switch self {
67-
case let .v1(value):
68-
return value
69-
case .v2:
70-
return nil
71-
}
72-
}
73-
74-
var v2: V2? {
75-
switch self {
76-
case .v1:
77-
return nil
78-
case let .v2(value):
79-
return value
80-
}
81-
}
82-
}
83-
84-
8564
extension PackageResolved {
8665
func getPackageMap() -> [PackageId: URL] {
8766
switch self {

Sources/ReleaseNotesCore/ReleaseNotes.swift

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ struct ReleaseNotes: AsyncParsableCommand {
5353

5454
print("\nRelease notes URLs (updating from):")
5555
for update in updates {
56-
let releasesURL = packageMap[caseIgnoring: update.packageId]
56+
let releasesURL = packageMap[caseInsensitive: update.packageId]
5757
.map { $0.absoluteString.droppingGitExtension + "/releases" }
5858
?? "\(update.packageId)"
5959
print(releasesURL, "(\(update.oldRevision?.description ?? "new package"))")
@@ -105,10 +105,3 @@ struct ReleaseNotes: AsyncParsableCommand {
105105
}
106106

107107
}
108-
109-
110-
private extension Dictionary where Key == PackageId, Value == URL {
111-
subscript(caseIgnoring packageId: PackageId) -> URL? {
112-
first(where: { $0.key.lowercased() == packageId.lowercased() })?.value
113-
}
114-
}

Tests/ReleaseNotesTests/PackageResolvedTests.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,4 +32,13 @@ final class ReleaseNotesCoreTests: XCTestCase {
3232
XCTAssertEqual(map?.count, 5)
3333
}
3434

35+
func test_Dictionary_subscript_caseInsensitive() throws {
36+
let d = [
37+
PackageId("foo"): URL(string: "1")!,
38+
PackageId("bar"): URL(string: "2")!,
39+
]
40+
XCTAssertEqual(d[caseInsensitive: "foo"], URL(string: "1")!)
41+
XCTAssertEqual(d[caseInsensitive: "Foo"], URL(string: "1")!)
42+
}
43+
3544
}

Tests/ReleaseNotesTests/ReleaseNotesCoreTests.swift

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,26 @@ final class PackageResolvedTests: XCTestCase {
4949
}
5050

5151
}
52+
53+
54+
private extension PackageResolved {
55+
var v1: V1? {
56+
switch self {
57+
case let .v1(value):
58+
return value
59+
case .v2:
60+
return nil
61+
}
62+
}
63+
64+
var v2: V2? {
65+
switch self {
66+
case .v1:
67+
return nil
68+
case let .v2(value):
69+
return value
70+
}
71+
}
72+
}
73+
74+

0 commit comments

Comments
 (0)