Skip to content

Commit f21e583

Browse files
committed
Add RelativePath
1 parent fbca3e6 commit f21e583

File tree

7 files changed

+56
-89
lines changed

7 files changed

+56
-89
lines changed

Package.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,7 @@ let package = Package(
279279
name: "PackageModelSyntax",
280280
dependencies: [
281281
"Basics",
282+
"PackageDescription",
282283
"PackageLoading",
283284
"PackageModel",
284285
.product(name: "SwiftBasicFormat", package: "swift-syntax"),
@@ -290,6 +291,7 @@ let package = Package(
290291
],
291292
exclude: ["CMakeLists.txt"],
292293
swiftSettings: [
294+
.unsafeFlags(["-package-description-version", "999.0"]),
293295
.unsafeFlags(["-static"]),
294296
]
295297
),
@@ -508,6 +510,7 @@ let package = Package(
508510
"Basics",
509511
"Build",
510512
"CoreCommands",
513+
"PackageDescription",
511514
"PackageGraph",
512515
"PackageModelSyntax",
513516
"SourceControl",
@@ -516,6 +519,7 @@ let package = Package(
516519
],
517520
exclude: ["CMakeLists.txt", "README.md"],
518521
swiftSettings: [
522+
.unsafeFlags(["-package-description-version", "999.0"]),
519523
.unsafeFlags(["-static"]),
520524
]
521525
),

Sources/Commands/PackageCommands/AddDependency.swift

Lines changed: 14 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -13,12 +13,12 @@
1313
import ArgumentParser
1414
import Basics
1515
import CoreCommands
16-
import PackageModel
16+
import PackageDescription
17+
import class PackageModel.Manifest
1718
import PackageModelSyntax
1819
import SwiftParser
1920
import SwiftSyntax
2021
import TSCBasic
21-
import TSCUtility
2222
import Workspace
2323

2424
extension SwiftPackageCommand {
@@ -93,10 +93,8 @@ extension SwiftPackageCommand {
9393
workspace: Workspace,
9494
url: String
9595
) throws {
96-
let identity = PackageIdentity(url: .init(url))
97-
9896
// Collect all of the possible version requirements.
99-
var requirements: [PackageDependency.SourceControl.Requirement] = []
97+
var requirements: [PackageDescription.Package.Dependency.SourceControlRequirement] = []
10098
if let exact {
10199
requirements.append(.exact(exact))
102100
}
@@ -129,7 +127,7 @@ extension SwiftPackageCommand {
129127
)
130128
}
131129

132-
let requirement: PackageDependency.SourceControl.Requirement
130+
let requirement: PackageDescription.Package.Dependency.SourceControlRequirement
133131
if case .range(let range) = firstRequirement {
134132
if let to {
135133
requirement = .range(range.lowerBound ..< to)
@@ -144,12 +142,9 @@ extension SwiftPackageCommand {
144142
}
145143
}
146144

147-
let packageDependency: PackageDependency = .sourceControl(
148-
identity: identity,
149-
nameForTargetDependencyResolutionOnly: nil,
150-
location: .remote(.init(url)),
145+
let packageDependency: PackageDescription.Package.Dependency = .package(
146+
url: dependency,
151147
requirement: requirement,
152-
productFilter: .everything,
153148
traits: []
154149
)
155150

@@ -165,10 +160,8 @@ extension SwiftPackageCommand {
165160
workspace: Workspace,
166161
id: String
167162
) throws {
168-
let identity: PackageIdentity = .plain(id)
169-
170163
// Collect all of the possible version requirements.
171-
var requirements: [PackageDependency.Registry.Requirement] = []
164+
var requirements: [Package.Dependency.RegistryRequirement] = []
172165
if let exact {
173166
requirements.append(.exact(exact))
174167
}
@@ -193,7 +186,7 @@ extension SwiftPackageCommand {
193186
)
194187
}
195188

196-
let requirement: PackageDependency.Registry.Requirement
189+
let requirement: Package.Dependency.RegistryRequirement
197190
if case .range(let range) = firstRequirement {
198191
if let to {
199192
requirement = .range(range.lowerBound ..< to)
@@ -208,15 +201,13 @@ extension SwiftPackageCommand {
208201
}
209202
}
210203

211-
let packageDependency: PackageDependency = .registry(
212-
identity: identity,
204+
let packageDependency: PackageDescription.Package.Dependency = .package(
205+
id: dependency,
213206
requirement: requirement,
214-
productFilter: .everything,
215207
traits: []
216208
)
217209

218-
219-
try applyEdits(
210+
try self.applyEdits(
220211
packagePath: packagePath,
221212
workspace: workspace,
222213
packageDependency: packageDependency
@@ -228,19 +219,9 @@ extension SwiftPackageCommand {
228219
workspace: Workspace,
229220
directory: String
230221
) throws {
231-
guard let path = try? Basics.AbsolutePath(validating: directory) else {
232-
throw StringError("Package path not found")
233-
}
234-
let identity = PackageIdentity(path: path)
235-
let packageDependency: PackageDependency = .fileSystem(
236-
identity: identity,
237-
nameForTargetDependencyResolutionOnly: nil,
238-
path: path,
239-
productFilter: .everything,
240-
traits: []
241-
)
222+
let packageDependency: PackageDescription.Package.Dependency = .package(path: directory)
242223

243-
try applyEdits(
224+
try self.applyEdits(
244225
packagePath: packagePath,
245226
workspace: workspace,
246227
packageDependency: packageDependency
@@ -250,7 +231,7 @@ extension SwiftPackageCommand {
250231
private func applyEdits(
251232
packagePath: Basics.AbsolutePath,
252233
workspace: Workspace,
253-
packageDependency: PackageDependency
234+
packageDependency: PackageDescription.Package.Dependency
254235
) throws {
255236
// Load the manifest file
256237
let fileSystem = workspace.fileSystem

Sources/CoreCommands/Options.swift

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ import struct SPMBuildCore.BuildSystemProvider
3434

3535
import struct TSCBasic.StringError
3636

37+
import struct PackageDescription.Version
3738
import struct TSCUtility.Version
3839

3940
import class Workspace.Workspace
@@ -752,7 +753,8 @@ extension AbsolutePath: ExpressibleByArgument {}
752753
extension WorkspaceConfiguration.CheckingMode: ExpressibleByArgument {}
753754
extension Sanitizer: ExpressibleByArgument {}
754755
extension BuildSystemProvider.Kind: ExpressibleByArgument {}
755-
extension Version: ExpressibleByArgument {}
756+
extension PackageDescription.Version: ExpressibleByArgument {}
757+
extension TSCUtility.Version: ExpressibleByArgument {}
756758
extension PackageIdentity: ExpressibleByArgument {}
757759
extension URL: ExpressibleByArgument {}
758760
#else
@@ -761,7 +763,8 @@ extension AbsolutePath: @retroactive ExpressibleByArgument {}
761763
extension WorkspaceConfiguration.CheckingMode: @retroactive ExpressibleByArgument {}
762764
extension Sanitizer: @retroactive ExpressibleByArgument {}
763765
extension BuildSystemProvider.Kind: @retroactive ExpressibleByArgument {}
764-
extension Version: @retroactive ExpressibleByArgument {}
766+
extension PackageDescription.Version: @retroactive ExpressibleByArgument {}
767+
extension TSCUtility.Version: @retroactive ExpressibleByArgument {}
765768
extension PackageIdentity: @retroactive ExpressibleByArgument {}
766769
extension URL: @retroactive ExpressibleByArgument {}
767770
#endif

Sources/PackageDescription/PackageDependency.swift

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -824,17 +824,15 @@ extension Package.Dependency {
824824
return .init(name: name, url: url, requirement: requirement, traits: nil)
825825
}
826826

827-
// intentionally private to hide enum detail
828-
private static func package(
827+
package static func package(
829828
name: String? = nil,
830829
url: String,
831830
requirement: Package.Dependency.SourceControlRequirement
832831
) -> Package.Dependency {
833832
return .init(name: name, location: url, requirement: requirement, traits: nil)
834833
}
835834

836-
// intentionally private to hide enum detail
837-
private static func package(
835+
package static func package(
838836
name: String? = nil,
839837
url: String,
840838
requirement: Package.Dependency.SourceControlRequirement,
@@ -1103,8 +1101,7 @@ extension Package.Dependency {
11031101
return .package(id: id, range.lowerBound ..< upperBound, traits: traits)
11041102
}
11051103

1106-
// intentionally private to hide enum detail
1107-
private static func package(
1104+
package static func package(
11081105
id: String,
11091106
requirement: Package.Dependency.RegistryRequirement,
11101107
traits: Set<Trait>?

Sources/PackageModelSyntax/AddPackageDependency.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,8 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import Basics
14+
import PackageDescription
1415
import PackageLoading
15-
import PackageModel
1616
import SwiftParser
1717
import SwiftSyntax
1818
import SwiftSyntaxBuilder
@@ -34,7 +34,7 @@ public struct AddPackageDependency {
3434
/// Produce the set of source edits needed to add the given package
3535
/// dependency to the given manifest file.
3636
public static func addPackageDependency(
37-
_ dependency: PackageDependency,
37+
_ dependency: PackageDescription.Package.Dependency,
3838
to manifest: SourceFileSyntax
3939
) throws -> PackageEditResult {
4040
// Make sure we have a suitable tools version in the manifest.
@@ -57,7 +57,7 @@ public struct AddPackageDependency {
5757

5858
/// Implementation of adding a package dependency to an existing call.
5959
static func addPackageDependencyLocal(
60-
_ dependency: PackageDependency,
60+
_ dependency: PackageDescription.Package.Dependency,
6161
to packageCall: FunctionCallExprSyntax
6262
) throws -> FunctionCallExprSyntax {
6363
try packageCall.appendingToArrayArgument(

Sources/PackageModelSyntax/AddTarget.swift

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import Basics
14+
import PackageDescription
1415
import PackageModel
1516
import SwiftParser
1617
import SwiftSyntax
@@ -340,7 +341,7 @@ fileprivate let macroTargetDependencies: [TargetDescription.Dependency] = [
340341
]
341342

342343
/// The package dependency for swift-syntax, for use in macros.
343-
fileprivate extension PackageDependency {
344+
fileprivate extension PackageDescription.Package.Dependency {
344345
/// Source control URL for the swift-syntax package.
345346
static var swiftSyntaxURL: SourceControlURL {
346347
"https://github.com/swiftlang/swift-syntax.git"
@@ -349,18 +350,14 @@ fileprivate extension PackageDependency {
349350
/// Package dependency on the swift-syntax package.
350351
static func swiftSyntax(
351352
configuration: InstalledSwiftPMConfiguration
352-
) -> PackageDependency {
353+
) -> PackageDescription.Package.Dependency {
353354
let swiftSyntaxVersionDefault = configuration
354355
.swiftSyntaxVersionForMacroTemplate
355-
let swiftSyntaxVersion = Version(swiftSyntaxVersionDefault.description)!
356-
357-
return .sourceControl(
358-
identity: PackageIdentity(url: swiftSyntaxURL),
359-
nameForTargetDependencyResolutionOnly: nil,
360-
location: .remote(swiftSyntaxURL),
361-
requirement: .range(.upToNextMajor(from: swiftSyntaxVersion)),
362-
productFilter: .everything,
363-
traits: []
356+
let swiftSyntaxVersion = PackageDescription.Version(swiftSyntaxVersionDefault.description)!
357+
358+
return .package(
359+
url: swiftSyntaxURL.absoluteString,
360+
requirement: .range(.upToNextMajor(from: swiftSyntaxVersion))
364361
)
365362
}
366363
}

Sources/PackageModelSyntax/PackageDependency+Syntax.swift renamed to Sources/PackageModelSyntax/PackageDescription+Syntax.swift

Lines changed: 19 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -11,47 +11,26 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import Basics
14-
import PackageModel
14+
import PackageDescription
1515
import SwiftParser
1616
import SwiftSyntax
17-
import struct TSCUtility.Version
1817

19-
extension PackageDependency: ManifestSyntaxRepresentable {
18+
extension PackageDescription.Package.Dependency: ManifestSyntaxRepresentable {
2019
func asSyntax() -> ExprSyntax {
21-
switch self {
22-
case .fileSystem(let filesystem): filesystem.asSyntax()
23-
case .sourceControl(let sourceControl): sourceControl.asSyntax()
24-
case .registry(let registry): registry.asSyntax()
25-
}
26-
}
27-
}
28-
29-
extension PackageDependency.FileSystem: ManifestSyntaxRepresentable {
30-
func asSyntax() -> ExprSyntax {
31-
".package(path: \(literal: path.description))"
32-
}
33-
}
34-
35-
extension PackageDependency.SourceControl: ManifestSyntaxRepresentable {
36-
func asSyntax() -> ExprSyntax {
37-
// TODO: Not handling identity, nameForTargetDependencyResolutionOnly,
38-
// or productFilter yet.
39-
switch location {
40-
case .local:
20+
switch self.kind {
21+
case .fileSystem(name: _, path: let path):
22+
".package(path: \(literal: path.description))"
23+
case .sourceControl(name: _, location: let location, requirement: let requirement):
24+
".package(url: \(literal: location.description), \(requirement.asSyntax()))"
25+
case .registry(id: let id, requirement: let requirement):
26+
".package(id: \(literal: id.description), \(requirement.asSyntax()))"
27+
@unknown default:
4128
fatalError()
42-
case .remote(let url):
43-
".package(url: \(literal: url.description), \(requirement.asSyntax()))"
4429
}
4530
}
4631
}
4732

48-
extension PackageDependency.Registry: ManifestSyntaxRepresentable {
49-
func asSyntax() -> ExprSyntax {
50-
".package(id: \(literal: identity.description), \(requirement.asSyntax()))"
51-
}
52-
}
53-
54-
extension PackageDependency.SourceControl.Requirement: ManifestSyntaxRepresentable {
33+
extension PackageDescription.Package.Dependency.SourceControlRequirement: ManifestSyntaxRepresentable {
5534
func asSyntax() -> LabeledExprSyntax {
5635
switch self {
5736
case .exact(let version):
@@ -82,11 +61,14 @@ extension PackageDependency.SourceControl.Requirement: ManifestSyntaxRepresentab
8261
label: "branch",
8362
expression: "\(literal: branch)" as ExprSyntax
8463
)
64+
65+
@unknown default:
66+
fatalError()
8567
}
8668
}
8769
}
8870

89-
extension PackageDependency.Registry.Requirement: ManifestSyntaxRepresentable {
71+
extension PackageDescription.Package.Dependency.RegistryRequirement: ManifestSyntaxRepresentable {
9072
func asSyntax() -> LabeledExprSyntax {
9173
switch self {
9274
case .exact(let version):
@@ -105,11 +87,14 @@ extension PackageDependency.Registry.Requirement: ManifestSyntaxRepresentable {
10587
LabeledExprSyntax(
10688
expression: "\(range.lowerBound.asSyntax())..<\(range.upperBound.asSyntax())" as ExprSyntax
10789
)
90+
91+
@unknown default:
92+
fatalError()
10893
}
10994
}
11095
}
11196

112-
extension Version: ManifestSyntaxRepresentable {
97+
extension PackageDescription.Version: ManifestSyntaxRepresentable {
11398
func asSyntax() -> ExprSyntax {
11499
"\(literal: description)"
115100
}

0 commit comments

Comments
 (0)