Skip to content

Commit 6aae1fd

Browse files
committed
Add RelativePath
1 parent 4011c7c commit 6aae1fd

File tree

9 files changed

+155
-167
lines changed

9 files changed

+155
-167
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: 17 additions & 50 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 {
@@ -66,24 +66,24 @@ extension SwiftPackageCommand {
6666
throw StringError("unknown package")
6767
}
6868

69-
switch type {
69+
switch self.type {
7070
case .url:
7171
try self.createSourceControlPackage(
7272
packagePath: packagePath,
7373
workspace: workspace,
74-
url: dependency
74+
url: self.dependency
7575
)
7676
case .path:
7777
try self.createFileSystemPackage(
7878
packagePath: packagePath,
7979
workspace: workspace,
80-
directory: dependency
80+
directory: self.dependency
8181
)
8282
case .registry:
8383
try self.createRegistryPackage(
8484
packagePath: packagePath,
8585
workspace: workspace,
86-
id: dependency
86+
id: self.dependency
8787
)
8888
}
8989
}
@@ -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,19 +142,10 @@ extension SwiftPackageCommand {
144142
}
145143
}
146144

147-
let packageDependency: PackageDependency = .sourceControl(
148-
identity: identity,
149-
nameForTargetDependencyResolutionOnly: nil,
150-
location: .remote(.init(url)),
151-
requirement: requirement,
152-
productFilter: .everything,
153-
traits: []
154-
)
155-
156-
try applyEdits(
145+
try self.applyEdits(
157146
packagePath: packagePath,
158147
workspace: workspace,
159-
packageDependency: packageDependency
148+
packageDependency: .package(url: url, requirement: requirement)
160149
)
161150
}
162151

@@ -165,10 +154,8 @@ extension SwiftPackageCommand {
165154
workspace: Workspace,
166155
id: String
167156
) throws {
168-
let identity: PackageIdentity = .plain(id)
169-
170157
// Collect all of the possible version requirements.
171-
var requirements: [PackageDependency.Registry.Requirement] = []
158+
var requirements: [Package.Dependency.RegistryRequirement] = []
172159
if let exact {
173160
requirements.append(.exact(exact))
174161
}
@@ -193,7 +180,7 @@ extension SwiftPackageCommand {
193180
)
194181
}
195182

196-
let requirement: PackageDependency.Registry.Requirement
183+
let requirement: Package.Dependency.RegistryRequirement
197184
if case .range(let range) = firstRequirement {
198185
if let to {
199186
requirement = .range(range.lowerBound ..< to)
@@ -208,18 +195,10 @@ extension SwiftPackageCommand {
208195
}
209196
}
210197

211-
let packageDependency: PackageDependency = .registry(
212-
identity: identity,
213-
requirement: requirement,
214-
productFilter: .everything,
215-
traits: []
216-
)
217-
218-
219-
try applyEdits(
198+
try self.applyEdits(
220199
packagePath: packagePath,
221200
workspace: workspace,
222-
packageDependency: packageDependency
201+
packageDependency: .package(id: id, requirement: requirement, traits: [])
223202
)
224203
}
225204

@@ -228,29 +207,17 @@ extension SwiftPackageCommand {
228207
workspace: Workspace,
229208
directory: String
230209
) 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-
)
242-
243-
try applyEdits(
210+
try self.applyEdits(
244211
packagePath: packagePath,
245212
workspace: workspace,
246-
packageDependency: packageDependency
213+
packageDependency: .package(path: directory)
247214
)
248215
}
249216

250217
private func applyEdits(
251218
packagePath: Basics.AbsolutePath,
252219
workspace: Workspace,
253-
packageDependency: PackageDependency
220+
packageDependency: PackageDescription.Package.Dependency
254221
) throws {
255222
// Load the manifest file
256223
let fileSystem = workspace.fileSystem

Sources/CoreCommands/Options.swift

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@
1212

1313
import ArgumentParser
1414

15-
import var Basics.localFileSystem
1615
import struct Basics.AbsolutePath
16+
import var Basics.localFileSystem
1717
import enum Basics.TestingLibrary
1818
import struct Basics.Triple
1919

@@ -22,8 +22,8 @@ import struct Foundation.URL
2222
import enum PackageModel.BuildConfiguration
2323
import struct PackageModel.BuildFlags
2424
import struct PackageModel.EnabledSanitizers
25-
import struct PackageModel.PackageIdentity
2625
import class PackageModel.Manifest
26+
import struct PackageModel.PackageIdentity
2727
import enum PackageModel.Sanitizer
2828
@_spi(SwiftPMInternal) import struct PackageModel.SwiftSDK
2929

@@ -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: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13-
1413
extension Package {
1514
/// A package dependency of a Swift package.
1615
///
@@ -161,7 +160,7 @@ extension Package {
161160
traits: traits
162161
)
163162
}
164-
163+
165164
convenience init(
166165
name: String?,
167166
location: String,
@@ -177,7 +176,7 @@ extension Package {
177176
traits: traits
178177
)
179178
}
180-
179+
181180
convenience init(
182181
id: String,
183182
requirement: RegistryRequirement,
@@ -824,17 +823,17 @@ extension Package.Dependency {
824823
return .init(name: name, url: url, requirement: requirement, traits: nil)
825824
}
826825

827-
// intentionally private to hide enum detail
828-
private static func package(
826+
// intentionally package to hide enum detail
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+
// intentionally package to hide enum detail
836+
package static func package(
838837
name: String? = nil,
839838
url: String,
840839
requirement: Package.Dependency.SourceControlRequirement,
@@ -1103,8 +1102,8 @@ extension Package.Dependency {
11031102
return .package(id: id, range.lowerBound ..< upperBound, traits: traits)
11041103
}
11051104

1106-
// intentionally private to hide enum detail
1107-
private static func package(
1105+
// intentionally package to hide enum detail
1106+
package static func package(
11081107
id: String,
11091108
requirement: Package.Dependency.RegistryRequirement,
11101109
traits: Set<Trait>?

Sources/PackageModelSyntax/AddPackageDependency.swift

Lines changed: 6 additions & 6 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
@@ -28,13 +28,13 @@ public struct AddPackageDependency {
2828
"targets",
2929
"swiftLanguageVersions",
3030
"cLanguageStandard",
31-
"cxxLanguageStandard"
31+
"cxxLanguageStandard",
3232
]
3333

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.
@@ -50,19 +50,19 @@ public struct AddPackageDependency {
5050

5151
return PackageEditResult(
5252
manifestEdits: [
53-
.replace(packageCall, with: newPackageCall.description)
53+
.replace(packageCall, with: newPackageCall.description),
5454
]
5555
)
5656
}
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(
6464
label: "dependencies",
65-
trailingLabels: Self.argumentLabelsAfterDependencies,
65+
trailingLabels: self.argumentLabelsAfterDependencies,
6666
newElement: dependency.asSyntax()
6767
)
6868
}

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+
.upToNextMajor(from: swiftSyntaxVersion)
364361
)
365362
}
366363
}

0 commit comments

Comments
 (0)