Skip to content

Commit 2d04d7e

Browse files
authored
refactor CLI options (#4190)
motivation: fix an issue when not all options are presented as expected, and make the code clearer to reason about changes: * rename SwiftToolOptions to GlobalOptions * refactor SwiftToolOptions (GlobalOptions) to multiple groups per domains: locations, caching, logging, build, linker, etc * set GlobalOptions "hiddenFromHelp" flag to false for swift-build, swift-test and swift-package * move enableCodeCoverage from GlobalOptions to TestToolOptions, since they apply there * refactor code that construct test build to pass in more fine grained options rather than take the entire global options model * adjust call sites and test rdar://82658867
1 parent 42129a5 commit 2d04d7e

11 files changed

+496
-407
lines changed

Sources/Commands/Options.swift

Lines changed: 264 additions & 237 deletions
Large diffs are not rendered by default.

Sources/Commands/SwiftBuildTool.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,8 +86,8 @@ public struct SwiftBuildTool: SwiftCommand {
8686
version: SwiftVersion.currentVersion.completeDisplayString,
8787
helpNames: [.short, .long, .customLong("help", withSingleDash: true)])
8888

89-
@OptionGroup(_hiddenFromHelp: true)
90-
var swiftOptions: SwiftToolOptions
89+
@OptionGroup()
90+
var globalOptions: GlobalOptions
9191

9292
@OptionGroup()
9393
var options: BuildToolOptions

Sources/Commands/SwiftPackageCollectionsTool.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ public struct SwiftPackageCollectionsTool: ParsableCommand {
7878
var jsonOptions: JSONOptions
7979

8080
@OptionGroup(_hiddenFromHelp: true)
81-
var swiftOptions: SwiftToolOptions
81+
var globalOptions: GlobalOptions
8282

8383
func run(_ swiftTool: SwiftTool) throws {
8484
let collections = try with(swiftTool) { collections in
@@ -99,7 +99,7 @@ public struct SwiftPackageCollectionsTool: ParsableCommand {
9999
static let configuration = CommandConfiguration(abstract: "Refresh configured collections")
100100

101101
@OptionGroup(_hiddenFromHelp: true)
102-
var swiftOptions: SwiftToolOptions
102+
var globalOptions: GlobalOptions
103103

104104
func run(_ swiftTool: SwiftTool) throws {
105105
let collections = try with(swiftTool) { collections in
@@ -125,7 +125,7 @@ public struct SwiftPackageCollectionsTool: ParsableCommand {
125125
var skipSignatureCheck: Bool = false
126126

127127
@OptionGroup(_hiddenFromHelp: true)
128-
var swiftOptions: SwiftToolOptions
128+
var globalOptions: GlobalOptions
129129

130130
func run(_ swiftTool: SwiftTool) throws {
131131
let collectionURL = try url(self.collectionURL)
@@ -164,7 +164,7 @@ public struct SwiftPackageCollectionsTool: ParsableCommand {
164164
var collectionURL: String
165165

166166
@OptionGroup(_hiddenFromHelp: true)
167-
var swiftOptions: SwiftToolOptions
167+
var globalOptions: GlobalOptions
168168

169169
func run(_ swiftTool: SwiftTool) throws {
170170
let collectionURL = try url(self.collectionURL)
@@ -198,7 +198,7 @@ public struct SwiftPackageCollectionsTool: ParsableCommand {
198198
var searchQuery: String
199199

200200
@OptionGroup(_hiddenFromHelp: true)
201-
var swiftOptions: SwiftToolOptions
201+
var globalOptions: GlobalOptions
202202

203203
func run(_ swiftTool: SwiftTool) throws {
204204
try with(swiftTool) { collections in
@@ -245,7 +245,7 @@ public struct SwiftPackageCollectionsTool: ParsableCommand {
245245
var version: String?
246246

247247
@OptionGroup(_hiddenFromHelp: true)
248-
var swiftOptions: SwiftToolOptions
248+
var globalOptions: GlobalOptions
249249

250250
private func printVersion(_ version: PackageCollectionsModel.Package.Version?) -> String? {
251251
guard let version = version else {

Sources/Commands/SwiftPackageRegistryTool.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ public struct SwiftPackageRegistryTool: ParsableCommand {
5454
helpNames: [.short, .long, .customLong("help", withSingleDash: true)])
5555

5656
@OptionGroup()
57-
var swiftOptions: SwiftToolOptions
57+
var globalOptions: GlobalOptions
5858

5959
public init() {}
6060

@@ -63,7 +63,7 @@ public struct SwiftPackageRegistryTool: ParsableCommand {
6363
abstract: "Set a custom registry")
6464

6565
@OptionGroup(_hiddenFromHelp: true)
66-
var swiftOptions: SwiftToolOptions
66+
var globalOptions: GlobalOptions
6767

6868
@Flag(help: "Apply settings to all projects for this user")
6969
var global: Bool = false
@@ -115,7 +115,7 @@ public struct SwiftPackageRegistryTool: ParsableCommand {
115115
abstract: "Remove a configured registry")
116116

117117
@OptionGroup(_hiddenFromHelp: true)
118-
var swiftOptions: SwiftToolOptions
118+
var globalOptions: GlobalOptions
119119

120120
@Flag(help: "Apply settings to all projects for this user")
121121
var global: Bool = false

0 commit comments

Comments
 (0)