Skip to content

Commit bd35a7a

Browse files
committed
Merge branch 'main' of github.com:apple/swift-package-manager into maxd/async-swift-build
# Conflicts: # Sources/Commands/SwiftBuildCommand.swift # Sources/swift-build/Entrypoint.swift # Sources/swift-package-manager/SwiftPM.swift
2 parents b49a95e + d5787ea commit bd35a7a

File tree

70 files changed

+669
-1515
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

70 files changed

+669
-1515
lines changed

.swiftpm/xcode/xcshareddata/xcschemes/SwiftPM-Package.xcscheme

Lines changed: 0 additions & 911 deletions
This file was deleted.

Package.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -416,7 +416,7 @@ let package = Package(
416416

417417
.target(
418418
/** Interacts with Swift SDKs used for cross-compilation */
419-
name: "SwiftSDKTool",
419+
name: "SwiftSDKCommand",
420420
dependencies: [
421421
.product(name: "ArgumentParser", package: "swift-argument-parser"),
422422
"Basics",
@@ -429,7 +429,7 @@ let package = Package(
429429

430430
.target(
431431
/** Interacts with package collections */
432-
name: "PackageCollectionsTool",
432+
name: "PackageCollectionsCommand",
433433
dependencies: [
434434
.product(name: "ArgumentParser", package: "swift-argument-parser"),
435435
"Basics",
@@ -442,7 +442,7 @@ let package = Package(
442442

443443
.target(
444444
/** Interact with package registry */
445-
name: "PackageRegistryTool",
445+
name: "PackageRegistryCommand",
446446
dependencies: [
447447
.product(name: "ArgumentParser", package: "swift-argument-parser"),
448448
"Basics",
@@ -488,7 +488,7 @@ let package = Package(
488488
.executableTarget(
489489
/** Interacts with Swift SDKs used for cross-compilation */
490490
name: "swift-experimental-sdk",
491-
dependencies: ["Commands", "SwiftSDKTool"],
491+
dependencies: ["Commands", "SwiftSDKCommand"],
492492
exclude: ["CMakeLists.txt"]
493493
),
494494
.executableTarget(
@@ -506,24 +506,24 @@ let package = Package(
506506
.executableTarget(
507507
/** Interacts with package collections */
508508
name: "swift-package-collection",
509-
dependencies: ["Commands", "PackageCollectionsTool"]
509+
dependencies: ["Commands", "PackageCollectionsCommand"]
510510
),
511511
.executableTarget(
512-
/** Multi-tool entry point for SwiftPM. */
512+
/** Multi-command entry point for SwiftPM. */
513513
name: "swift-package-manager",
514514
dependencies: [
515515
"Basics",
516516
"Commands",
517-
"SwiftSDKTool",
518-
"PackageCollectionsTool",
519-
"PackageRegistryTool"
517+
"SwiftSDKCommand",
518+
"PackageCollectionsCommand",
519+
"PackageRegistryCommand"
520520
],
521521
linkerSettings: swiftpmLinkSettings
522522
),
523523
.executableTarget(
524524
/** Interact with package registry */
525525
name: "swift-package-registry",
526-
dependencies: ["Commands", "PackageRegistryTool"]
526+
dependencies: ["Commands", "PackageRegistryCommand"]
527527
),
528528

529529
// MARK: Support for Swift macros, should eventually move to a plugin-based solution
@@ -714,7 +714,7 @@ if ProcessInfo.processInfo.environment["SWIFTCI_DISABLE_SDK_DEPENDENT_TESTS"] ==
714714
"Build",
715715
"Commands",
716716
"PackageModel",
717-
"PackageRegistryTool",
717+
"PackageRegistryCommand",
718718
"SourceControl",
719719
"SPMTestSupport",
720720
"Workspace",

Sources/CMakeLists.txt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,11 @@
99
add_compile_definitions(SKIP_RESOURCE_SUPPORT)
1010
add_compile_definitions(USE_IMPL_ONLY_IMPORTS)
1111

12-
add_subdirectory(SPMSQLite3)
1312
add_subdirectory(Basics)
1413
add_subdirectory(Build)
1514
add_subdirectory(Commands)
1615
add_subdirectory(CompilerPluginSupport)
1716
add_subdirectory(CoreCommands)
18-
add_subdirectory(SwiftSDKTool)
1917
add_subdirectory(DriverSupport)
2018
add_subdirectory(LLBuildManifest)
2119
add_subdirectory(PackageDescription)
@@ -26,14 +24,16 @@ add_subdirectory(PackageModel)
2624
add_subdirectory(PackagePlugin)
2725
add_subdirectory(PackageRegistry)
2826
add_subdirectory(PackageSigning)
29-
add_subdirectory(SPMBuildCore)
30-
add_subdirectory(SPMLLBuild)
3127
add_subdirectory(SourceControl)
3228
add_subdirectory(SourceKitLSPAPI)
29+
add_subdirectory(SPMBuildCore)
30+
add_subdirectory(SPMLLBuild)
31+
add_subdirectory(SPMSQLite3)
3332
add_subdirectory(swift-bootstrap)
3433
add_subdirectory(swift-build)
3534
add_subdirectory(swift-experimental-sdk)
3635
add_subdirectory(swift-package)
3736
add_subdirectory(swift-run)
3837
add_subdirectory(swift-test)
38+
add_subdirectory(SwiftSDKCommand)
3939
add_subdirectory(Workspace)

Sources/Commands/CMakeLists.txt

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,36 @@
77
# See http://swift.org/CONTRIBUTORS.txt for Swift project authors
88

99
add_library(Commands
10-
PackageTools/APIDiff.swift
11-
PackageTools/ArchiveSource.swift
12-
PackageTools/CompletionTool.swift
13-
PackageTools/ComputeChecksum.swift
14-
PackageTools/Config.swift
15-
PackageTools/Describe.swift
16-
PackageTools/DumpCommands.swift
17-
PackageTools/EditCommands.swift
18-
PackageTools/Format.swift
19-
PackageTools/Init.swift
20-
PackageTools/InstalledPackages.swift
21-
PackageTools/Learn.swift
22-
PackageTools/PluginCommand.swift
23-
PackageTools/ResetCommands.swift
24-
PackageTools/Resolve.swift
25-
PackageTools/ShowDependencies.swift
26-
PackageTools/SwiftPackageTool.swift
27-
PackageTools/ToolsVersionCommand.swift
28-
PackageTools/Update.swift
10+
PackageCommands/APIDiff.swift
11+
PackageCommands/ArchiveSource.swift
12+
PackageCommands/CompletionCommand.swift
13+
PackageCommands/ComputeChecksum.swift
14+
PackageCommands/Config.swift
15+
PackageCommands/Describe.swift
16+
PackageCommands/DumpCommands.swift
17+
PackageCommands/EditCommands.swift
18+
PackageCommands/Format.swift
19+
PackageCommands/Init.swift
20+
PackageCommands/InstalledPackages.swift
21+
PackageCommands/Learn.swift
22+
PackageCommands/PluginCommand.swift
23+
PackageCommands/ResetCommands.swift
24+
PackageCommands/Resolve.swift
25+
PackageCommands/ShowDependencies.swift
26+
PackageCommands/SwiftPackageCommand.swift
27+
PackageCommands/ToolsVersionCommand.swift
28+
PackageCommands/Update.swift
2929
Snippets/CardEvent.swift
3030
Snippets/Cards/SnippetCard.swift
3131
Snippets/Cards/SnippetGroupCard.swift
3232
Snippets/Cards/TopCard.swift
3333
Snippets/CardStack.swift
3434
Snippets/Card.swift
3535
Snippets/Colorful.swift
36-
SwiftBuildTool.swift
37-
SwiftRunTool.swift
38-
SwiftTestTool.swift
39-
ToolWorkspaceDelegate.swift
36+
SwiftBuildCommand.swift
37+
SwiftRunCommand.swift
38+
SwiftTestCommand.swift
39+
CommandWorkspaceDelegate.swift
4040
Utilities/APIDigester.swift
4141
Utilities/DependenciesSerializer.swift
4242
Utilities/DescribedPackage.swift

Sources/Commands/ToolWorkspaceDelegate.swift renamed to Sources/Commands/CommandWorkspaceDelegate.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ import Workspace
2424
import protocol TSCBasic.OutputByteStream
2525
import struct TSCUtility.Version
2626

27-
class ToolWorkspaceDelegate: WorkspaceDelegate {
27+
final class CommandWorkspaceDelegate: WorkspaceDelegate {
2828
private struct DownloadProgress {
2929
let bytesDownloaded: Int64
3030
let totalBytesToDownload: Int64
@@ -267,7 +267,7 @@ class ToolWorkspaceDelegate: WorkspaceDelegate {
267267
public extension _SwiftCommand {
268268
var workspaceDelegateProvider: WorkspaceDelegateProvider {
269269
return {
270-
ToolWorkspaceDelegate(
270+
CommandWorkspaceDelegate(
271271
observabilityScope: $0,
272272
outputHandler: $1,
273273
progressHandler: $2,

Sources/Commands/PackageTools/APIDiff.swift renamed to Sources/Commands/PackageCommands/APIDiff.swift

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -74,21 +74,21 @@ struct APIDiff: SwiftCommand {
7474
@Flag(help: "Regenerate the API baseline, even if an existing one is available.")
7575
var regenerateBaseline: Bool = false
7676

77-
func run(_ swiftTool: SwiftTool) throws {
78-
let apiDigesterPath = try swiftTool.getTargetToolchain().getSwiftAPIDigester()
79-
let apiDigesterTool = SwiftAPIDigester(fileSystem: swiftTool.fileSystem, tool: apiDigesterPath)
77+
func run(_ swiftCommandState: SwiftCommandState) throws {
78+
let apiDigesterPath = try swiftCommandState.getTargetToolchain().getSwiftAPIDigester()
79+
let apiDigesterTool = SwiftAPIDigester(fileSystem: swiftCommandState.fileSystem, tool: apiDigesterPath)
8080

81-
let packageRoot = try globalOptions.locations.packageDirectory ?? swiftTool.getPackageRoot()
81+
let packageRoot = try globalOptions.locations.packageDirectory ?? swiftCommandState.getPackageRoot()
8282
let repository = GitRepository(path: packageRoot)
8383
let baselineRevision = try repository.resolveRevision(identifier: treeish)
8484

8585
// We turn build manifest caching off because we need the build plan.
86-
let buildSystem = try swiftTool.createBuildSystem(explicitBuildSystem: .native, cacheBuildManifest: false)
86+
let buildSystem = try swiftCommandState.createBuildSystem(explicitBuildSystem: .native, cacheBuildManifest: false)
8787

8888
let packageGraph = try buildSystem.getPackageGraph()
8989
let modulesToDiff = try determineModulesToDiff(
9090
packageGraph: packageGraph,
91-
observabilityScope: swiftTool.observabilityScope
91+
observabilityScope: swiftCommandState.observabilityScope
9292
)
9393

9494
// Build the current package.
@@ -97,19 +97,19 @@ struct APIDiff: SwiftCommand {
9797
// Dump JSON for the baseline package.
9898
let baselineDumper = try APIDigesterBaselineDumper(
9999
baselineRevision: baselineRevision,
100-
packageRoot: swiftTool.getPackageRoot(),
100+
packageRoot: swiftCommandState.getPackageRoot(),
101101
productsBuildParameters: try buildSystem.buildPlan.destinationBuildParameters,
102102
toolsBuildParameters: try buildSystem.buildPlan.toolsBuildParameters,
103103
apiDigesterTool: apiDigesterTool,
104-
observabilityScope: swiftTool.observabilityScope
104+
observabilityScope: swiftCommandState.observabilityScope
105105
)
106106

107107
let baselineDir = try baselineDumper.emitAPIBaseline(
108108
for: modulesToDiff,
109109
at: overrideBaselineDir,
110110
force: regenerateBaseline,
111-
logLevel: swiftTool.logLevel,
112-
swiftTool: swiftTool
111+
logLevel: swiftCommandState.logLevel,
112+
swiftCommandState: swiftCommandState
113113
)
114114

115115
let results = ThreadSafeArrayStore<SwiftAPIDigester.ComparisonResult>()
@@ -119,7 +119,7 @@ struct APIDiff: SwiftCommand {
119119

120120
for module in modulesToDiff {
121121
let moduleBaselinePath = baselineDir.appending("\(module).json")
122-
guard swiftTool.fileSystem.exists(moduleBaselinePath) else {
122+
guard swiftCommandState.fileSystem.exists(moduleBaselinePath) else {
123123
print("\nSkipping \(module) because it does not exist in the baseline")
124124
skippedModules.insert(module)
125125
continue
@@ -136,7 +136,7 @@ struct APIDiff: SwiftCommand {
136136
results.append(comparisonResult)
137137
}
138138
} catch {
139-
swiftTool.observabilityScope.emit(error: "failed to compare API to baseline", underlyingError: error)
139+
swiftCommandState.observabilityScope.emit(error: "failed to compare API to baseline", underlyingError: error)
140140
}
141141
semaphore.signal()
142142
}
@@ -148,11 +148,11 @@ struct APIDiff: SwiftCommand {
148148
.subtracting(skippedModules)
149149
.subtracting(results.map(\.moduleName))
150150
for failedModule in failedModules {
151-
swiftTool.observabilityScope.emit(error: "failed to read API digester output for \(failedModule)")
151+
swiftCommandState.observabilityScope.emit(error: "failed to read API digester output for \(failedModule)")
152152
}
153153

154154
for result in results.get() {
155-
try self.printComparisonResult(result, observabilityScope: swiftTool.observabilityScope)
155+
try self.printComparisonResult(result, observabilityScope: swiftCommandState.observabilityScope)
156156
}
157157

158158
guard failedModules.isEmpty && results.get().allSatisfy(\.hasNoAPIBreakingChanges) else {

Sources/Commands/PackageTools/ArchiveSource.swift renamed to Sources/Commands/PackageCommands/ArchiveSource.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import Basics
1515
import CoreCommands
1616
import SourceControl
1717

18-
extension SwiftPackageTool {
18+
extension SwiftPackageCommand {
1919
struct ArchiveSource: SwiftCommand {
2020
static let configuration = CommandConfiguration(
2121
commandName: "archive-source",
@@ -31,23 +31,23 @@ extension SwiftPackageTool {
3131
)
3232
var output: AbsolutePath?
3333

34-
func run(_ swiftTool: SwiftTool) throws {
35-
let packageDirectory = try globalOptions.locations.packageDirectory ?? swiftTool.getPackageRoot()
34+
func run(_ swiftCommandState: SwiftCommandState) throws {
35+
let packageDirectory = try globalOptions.locations.packageDirectory ?? swiftCommandState.getPackageRoot()
3636

3737
let archivePath: AbsolutePath
3838
if let output {
3939
archivePath = output
4040
} else {
41-
let graph = try swiftTool.loadPackageGraph()
41+
let graph = try swiftCommandState.loadPackageGraph()
4242
let packageName = graph.rootPackages[graph.rootPackages.startIndex].manifest.displayName // TODO: use identity instead?
4343
archivePath = packageDirectory.appending("\(packageName).zip")
4444
}
4545

46-
try SwiftPackageTool.archiveSource(
46+
try SwiftPackageCommand.archiveSource(
4747
at: packageDirectory,
4848
to: archivePath,
4949
fileSystem: localFileSystem,
50-
cancellator: swiftTool.cancellator
50+
cancellator: swiftCommandState.cancellator
5151
)
5252

5353
if archivePath.isDescendantOfOrEqual(to: packageDirectory) {

Sources/Commands/PackageTools/CompletionTool.swift renamed to Sources/Commands/PackageCommands/CompletionCommand.swift

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ import CoreCommands
1515

1616
import var TSCBasic.stdoutStream
1717

18-
extension SwiftPackageTool {
19-
struct CompletionTool: SwiftCommand {
18+
extension SwiftPackageCommand {
19+
struct CompletionCommand: SwiftCommand {
2020
static let configuration = CommandConfiguration(
21-
abstract: "Completion tool (for shell completions)"
21+
abstract: "Completion command (for shell completions)"
2222
)
2323

2424
enum Mode: String, CaseIterable, ExpressibleByArgument {
@@ -37,10 +37,10 @@ extension SwiftPackageTool {
3737
commandName: "swift",
3838
abstract: "The Swift compiler",
3939
subcommands: [
40-
SwiftRunTool.self,
41-
SwiftBuildTool.self,
42-
SwiftTestTool.self,
43-
SwiftPackageTool.self,
40+
SwiftRunCommand.self,
41+
SwiftBuildCommand.self,
42+
SwiftTestCommand.self,
43+
SwiftPackageCommand.self,
4444
]
4545
)
4646
}
@@ -51,7 +51,7 @@ extension SwiftPackageTool {
5151
@Argument(help: "generate-bash-script | generate-zsh-script |\ngenerate-fish-script | list-dependencies | list-executables")
5252
var mode: Mode
5353

54-
func run(_ swiftTool: SwiftTool) throws {
54+
func run(_ swiftCommandState: SwiftCommandState) throws {
5555
switch mode {
5656
case .generateBashScript:
5757
let script = SwiftCommand.completionScript(for: .bash)
@@ -63,7 +63,7 @@ extension SwiftPackageTool {
6363
let script = SwiftCommand.completionScript(for: .fish)
6464
print(script)
6565
case .listDependencies:
66-
let graph = try swiftTool.loadPackageGraph()
66+
let graph = try swiftCommandState.loadPackageGraph()
6767
// command's result output goes on stdout
6868
// ie "swift package list-dependencies" should output to stdout
6969
ShowDependencies.dumpDependenciesOf(
@@ -72,14 +72,14 @@ extension SwiftPackageTool {
7272
on: TSCBasic.stdoutStream
7373
)
7474
case .listExecutables:
75-
let graph = try swiftTool.loadPackageGraph()
75+
let graph = try swiftCommandState.loadPackageGraph()
7676
let package = graph.rootPackages[graph.rootPackages.startIndex].underlying
7777
let executables = package.targets.filter { $0.type == .executable }
7878
for executable in executables {
7979
print(executable.name)
8080
}
8181
case .listSnippets:
82-
let graph = try swiftTool.loadPackageGraph()
82+
let graph = try swiftCommandState.loadPackageGraph()
8383
let package = graph.rootPackages[graph.rootPackages.startIndex].underlying
8484
let executables = package.targets.filter { $0.type == .snippet }
8585
for executable in executables {

Sources/Commands/PackageTools/ComputeChecksum.swift renamed to Sources/Commands/PackageCommands/ComputeChecksum.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,11 +27,11 @@ struct ComputeChecksum: SwiftCommand {
2727
@Argument(help: "The absolute or relative path to the binary artifact")
2828
var path: AbsolutePath
2929

30-
func run(_ swiftTool: SwiftTool) throws {
30+
func run(_ swiftCommandState: SwiftCommandState) throws {
3131
let binaryArtifactsManager = try Workspace.BinaryArtifactsManager(
32-
fileSystem: swiftTool.fileSystem,
33-
authorizationProvider: swiftTool.getAuthorizationProvider(),
34-
hostToolchain: swiftTool.getHostToolchain(),
32+
fileSystem: swiftCommandState.fileSystem,
33+
authorizationProvider: swiftCommandState.getAuthorizationProvider(),
34+
hostToolchain: swiftCommandState.getHostToolchain(),
3535
checksumAlgorithm: SHA256(),
3636
cachePath: .none,
3737
customHTTPClient: .none,

0 commit comments

Comments
 (0)