Skip to content

Commit e26417c

Browse files
authored
Bring back "Refactor Commands module" (#5864)
This reverts commit cf19c64 and restores the `--build-path` option. It also switches the `bootstrap` script back to using it so that we have an easy check that the option is still present.
1 parent 1c53ef5 commit e26417c

26 files changed

+612
-411
lines changed

Package.swift

+15
Original file line numberDiff line numberDiff line change
@@ -342,13 +342,28 @@ let package = Package(
342342

343343
// MARK: Commands
344344

345+
.target(
346+
/** Minimal set of commands required for bootstrapping a new SwiftPM */
347+
name: "CoreCommands",
348+
dependencies: [
349+
.product(name: "ArgumentParser", package: "swift-argument-parser"),
350+
"Basics",
351+
"Build",
352+
"PackageFingerprint",
353+
"PackageModel",
354+
"Workspace",
355+
],
356+
exclude: ["CMakeLists.txt"]
357+
),
358+
345359
.target(
346360
/** High-level commands */
347361
name: "Commands",
348362
dependencies: [
349363
.product(name: "ArgumentParser", package: "swift-argument-parser"),
350364
"Basics",
351365
"Build",
366+
"CoreCommands",
352367
"PackageCollections",
353368
"PackageFingerprint",
354369
"PackageGraph",

Sources/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ add_subdirectory(SPMSQLite3)
1010
add_subdirectory(Basics)
1111
add_subdirectory(Build)
1212
add_subdirectory(Commands)
13+
add_subdirectory(CoreCommands)
1314
add_subdirectory(DriverSupport)
1415
add_subdirectory(LLBuildManifest)
1516
add_subdirectory(PackageCollections)

Sources/Commands/CMakeLists.txt

+2-2
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77
# See http://swift.org/CONTRIBUTORS.txt for Swift project authors
88

99
add_library(Commands
10-
Options.swift
1110
Snippets/CardEvent.swift
1211
Snippets/Cards/SnippetCard.swift
1312
Snippets/Cards/SnippetGroupCard.swift
@@ -21,7 +20,7 @@ add_library(Commands
2120
SwiftPackageTool.swift
2221
SwiftRunTool.swift
2322
SwiftTestTool.swift
24-
SwiftTool.swift
23+
ToolWorkspaceDelegate.swift
2524
Utilities/APIDigester.swift
2625
Utilities/DependenciesSerializer.swift
2726
Utilities/Describe.swift
@@ -35,6 +34,7 @@ target_link_libraries(Commands PUBLIC
3534
ArgumentParser
3635
Basics
3736
Build
37+
CoreCommands
3838
PackageCollections
3939
PackageFingerprint
4040
PackageGraph

Sources/Commands/Snippets/CardStack.swift

+1
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
//===----------------------------------------------------------------------===//
1212

1313
import Basics
14+
import CoreCommands
1415
import PackageGraph
1516
import PackageModel
1617
import TSCBasic

Sources/Commands/Snippets/Cards/SnippetCard.swift

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
import CoreCommands
1314
import PackageModel
1415
import TSCBasic
1516

Sources/Commands/Snippets/Cards/SnippetGroupCard.swift

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
import CoreCommands
1314
import PackageModel
1415

1516
/// A card showing the snippets in a ``SnippetGroup``.

Sources/Commands/Snippets/Cards/TopCard.swift

+1
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212

13+
import CoreCommands
1314
import Foundation
1415
import PackageModel
1516
import PackageGraph

Sources/Commands/SwiftBuildTool.swift

+20-4
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
import ArgumentParser
1414
import Basics
1515
import Build
16+
import CoreCommands
1617
import PackageGraph
1718
import SPMBuildCore
1819
import TSCBasic
20+
import XCBuildSupport
1921

2022
import enum TSCUtility.Diagnostics
2123
import func TSCUtility.getClangVersion
@@ -94,7 +96,7 @@ public struct SwiftBuildTool: SwiftCommand {
9496
helpNames: [.short, .long, .customLong("help", withSingleDash: true)])
9597

9698
@OptionGroup()
97-
var globalOptions: GlobalOptions
99+
public var globalOptions: GlobalOptions
98100

99101
@OptionGroup()
100102
var options: BuildToolOptions
@@ -157,8 +159,22 @@ public struct SwiftBuildTool: SwiftCommand {
157159
public init() {}
158160
}
159161

160-
extension Basics.Diagnostic {
161-
static func mutuallyExclusiveArgumentsError(arguments: [String]) -> Self {
162-
.error(arguments.map{ "'\($0)'" }.spm_localizedJoin(type: .conjunction) + " are mutually exclusive")
162+
extension SwiftCommand {
163+
public func buildSystemProvider(_ swiftTool: SwiftTool) throws -> BuildSystemProvider {
164+
return .init(providers: try swiftTool.defaultBuildSystemProvider.providers.merging([
165+
.xcode: { (explicitProduct: String?, cacheBuildManifest: Bool, customBuildParameters: BuildParameters?, customPackageGraphLoader: (() throws -> PackageGraph)?, customOutputStream: OutputByteStream?, customLogLevel: Basics.Diagnostic.Severity?, customObservabilityScope: ObservabilityScope?) throws -> BuildSystem in
166+
let graphLoader = { try swiftTool.loadPackageGraph(explicitProduct: explicitProduct) }
167+
return try XcodeBuildSystem(
168+
buildParameters: customBuildParameters ?? swiftTool.buildParameters(),
169+
packageGraphLoader: customPackageGraphLoader ?? graphLoader,
170+
outputStream: customOutputStream ?? swiftTool.outputStream,
171+
logLevel: customLogLevel ?? swiftTool.logLevel,
172+
fileSystem: swiftTool.fileSystem,
173+
observabilityScope: customObservabilityScope ?? swiftTool.observabilityScope
174+
)
175+
},
176+
], uniquingKeysWith: { a, b in
177+
return b
178+
}))
163179
}
164180
}

Sources/Commands/SwiftPackageCollectionsTool.swift

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import ArgumentParser
1414
import Basics
15+
import CoreCommands
1516
import Foundation
1617
import PackageCollections
1718
import PackageModel

Sources/Commands/SwiftPackageRegistryTool.swift

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import ArgumentParser
1414
import Basics
15+
import CoreCommands
1516
import TSCBasic
1617
import SPMBuildCore
1718
import PackageModel

Sources/Commands/SwiftPackageTool.swift

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import ArgumentParser
1414
import Basics
15+
import CoreCommands
1516
import TSCBasic
1617
import SPMBuildCore
1718
import PackageModel

Sources/Commands/SwiftRunTool.swift

+3-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import ArgumentParser
1414
import Basics
15+
import CoreCommands
1516
import PackageGraph
1617
import PackageModel
1718
import TSCBasic
@@ -96,12 +97,12 @@ public struct SwiftRunTool: SwiftCommand {
9697
helpNames: [.short, .long, .customLong("help", withSingleDash: true)])
9798

9899
@OptionGroup()
99-
var globalOptions: GlobalOptions
100+
public var globalOptions: GlobalOptions
100101

101102
@OptionGroup()
102103
var options: RunToolOptions
103104

104-
var toolWorkspaceConfiguration: ToolWorkspaceConfiguration {
105+
public var toolWorkspaceConfiguration: ToolWorkspaceConfiguration {
105106
return .init(wantsREPLProduct: options.mode == .repl)
106107
}
107108

Sources/Commands/SwiftTestTool.swift

+2-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212

1313
import ArgumentParser
1414
import Basics
15+
import CoreCommands
1516
import Dispatch
1617
import class Foundation.NSLock
1718
import class Foundation.ProcessInfo
@@ -150,7 +151,7 @@ public struct SwiftTestTool: SwiftCommand {
150151
helpNames: [.short, .long, .customLong("help", withSingleDash: true)])
151152

152153
@OptionGroup()
153-
var globalOptions: GlobalOptions
154+
public var globalOptions: GlobalOptions
154155

155156
@OptionGroup()
156157
var sharedOptions: SharedOptions

0 commit comments

Comments
 (0)