Skip to content

Commit 29e7e41

Browse files
committed
Rearrange arguments
1 parent 811f887 commit 29e7e41

File tree

1 file changed

+44
-46
lines changed

1 file changed

+44
-46
lines changed

Sources/Commands/SwiftScriptTool.swift

Lines changed: 44 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -18,16 +18,13 @@ import Workspace
1818

1919
protocol ScriptCommand: ParsableCommand {
2020
var swiftOptions: SwiftToolOptions { get }
21-
var options: ScriptToolOptions { get }
21+
var file: String { get }
2222

2323
func run(_ swiftTool: SwiftTool, as productName: String, at cacheDirPath: AbsolutePath) throws
2424
}
2525

2626
extension ScriptCommand {
2727
public func run() throws {
28-
guard let file = options.file else {
29-
throw ScriptError.fileNotFound("")
30-
}
3128
let (productName, cacheDirPath) = try checkAndPerformCache(for: file)
3229

3330
var swiftOptions = swiftOptions
@@ -51,10 +48,6 @@ struct ScriptToolOptions: ParsableArguments {
5148

5249
var shouldBuild: Bool { !shouldSkipBuild }
5350

54-
/// The script file to run.
55-
@Argument(help: "The script file to run")
56-
var file: String?
57-
5851
/// The arguments to pass to the executable.
5952
@Argument(parsing: .unconditionalRemaining,
6053
help: "The arguments to pass to the executable")
@@ -84,14 +77,16 @@ public struct SwiftScriptTool: ParsableCommand {
8477
public static var _errorLabel: String { "error" }
8578
}
8679

87-
/// swift-run tool namespace
8880
extension SwiftScriptTool {
8981
struct Run: ScriptCommand {
9082
static let configuration = CommandConfiguration(
9183
abstract: "Runs a script")
9284

9385
@OptionGroup(_hiddenFromHelp: true)
9486
var swiftOptions: SwiftToolOptions
87+
88+
@Argument(help: "The script file to run")
89+
var file: String
9590

9691
@OptionGroup()
9792
var options: ScriptToolOptions
@@ -136,6 +131,9 @@ extension SwiftScriptTool {
136131

137132
@OptionGroup(_hiddenFromHelp: true)
138133
var swiftOptions: SwiftToolOptions
134+
135+
@Argument(help: "The script file to build")
136+
var file: String
139137

140138
@OptionGroup()
141139
var options: ScriptToolOptions
@@ -177,8 +175,8 @@ extension SwiftScriptTool {
177175
@OptionGroup(_hiddenFromHelp: true)
178176
var swiftOptions: SwiftToolOptions
179177

180-
@OptionGroup()
181-
var options: ScriptToolOptions
178+
@Argument(help: "The script file to clean build cache")
179+
var file: String
182180

183181
func run(_ swiftTool: SwiftTool, as productName: String, at cacheDirPath: AbsolutePath) throws {
184182
try swiftTool.getActiveWorkspace().clean(with: swiftTool.diagnostics)
@@ -192,8 +190,8 @@ extension SwiftScriptTool {
192190
@OptionGroup(_hiddenFromHelp: true)
193191
var swiftOptions: SwiftToolOptions
194192

195-
@OptionGroup()
196-
var options: ScriptToolOptions
193+
@Argument(help: "The script file to reset build cache")
194+
var file: String
197195

198196
func run(_ swiftTool: SwiftTool, as productName: String, at cacheDirPath: AbsolutePath) throws {
199197
try localFileSystem.removeFileTree(cacheDirPath)
@@ -207,8 +205,8 @@ extension SwiftScriptTool {
207205
@OptionGroup(_hiddenFromHelp: true)
208206
var swiftOptions: SwiftToolOptions
209207

210-
@OptionGroup()
211-
var options: ScriptToolOptions
208+
@Argument(help: "The script file to update dependencies")
209+
var file: String
212210

213211
@Flag(name: [.long, .customShort("n")],
214212
help: "Display the list of dependencies that can be updated")
@@ -251,35 +249,6 @@ extension SwiftScriptTool {
251249
}
252250
}
253251

254-
extension SwiftScriptTool {
255-
struct List: ParsableCommand {
256-
static let configuration = CommandConfiguration(
257-
abstract: "List script caches")
258-
259-
@OptionGroup(_hiddenFromHelp: true)
260-
var swiftOptions: SwiftToolOptions
261-
262-
func run() throws {
263-
let cacheDir = try localFileSystem.getOrCreateSwiftScriptCacheDirectory()
264-
let scripts = try localFileSystem.getDirectoryContents(cacheDir)
265-
let resolved = try scripts.map { script -> (String, AbsolutePath) in
266-
let sourceDir = cacheDir.appending(components: script, "Sources")
267-
guard localFileSystem.isDirectory(sourceDir),
268-
let name = try localFileSystem.getDirectoryContents(sourceDir).first,
269-
case let realpath = resolveSymlinks(sourceDir.appending(components: name, "main.swift")) else {
270-
throw Diagnostics.fatalError
271-
}
272-
return (script, realpath)
273-
}
274-
print("\(scripts.count) script\(scripts.count > 1 ? "s" : "") cached at \(cacheDir)")
275-
guard let maxLength = resolved.map(\.0.count).max() else { return }
276-
resolved.forEach { (name, path) in
277-
print(name + String(repeating: " ", count: maxLength - name.count + 2) + path.pathString)
278-
}
279-
}
280-
}
281-
}
282-
283252
extension SwiftScriptTool {
284253
struct ResolveOptions: ParsableArguments {
285254
@Option(help: "The version to resolve at", transform: { Version(string: $0) })
@@ -302,8 +271,8 @@ extension SwiftScriptTool {
302271
@OptionGroup(_hiddenFromHelp: true)
303272
var swiftOptions: SwiftToolOptions
304273

305-
@OptionGroup()
306-
var options: ScriptToolOptions
274+
@Argument(help: "The script file to clean")
275+
var file: String
307276

308277
@OptionGroup()
309278
var resolveOptions: ResolveOptions
@@ -330,6 +299,35 @@ extension SwiftScriptTool {
330299
}
331300
}
332301

302+
extension SwiftScriptTool {
303+
struct List: ParsableCommand {
304+
static let configuration = CommandConfiguration(
305+
abstract: "List script caches")
306+
307+
@OptionGroup(_hiddenFromHelp: true)
308+
var swiftOptions: SwiftToolOptions
309+
310+
func run() throws {
311+
let cacheDir = try localFileSystem.getOrCreateSwiftScriptCacheDirectory()
312+
let scripts = try localFileSystem.getDirectoryContents(cacheDir)
313+
let resolved = try scripts.map { script -> (String, AbsolutePath) in
314+
let sourceDir = cacheDir.appending(components: script, "Sources")
315+
guard localFileSystem.isDirectory(sourceDir),
316+
let name = try localFileSystem.getDirectoryContents(sourceDir).first,
317+
case let realpath = resolveSymlinks(sourceDir.appending(components: name, "main.swift")) else {
318+
throw Diagnostics.fatalError
319+
}
320+
return (script, realpath)
321+
}
322+
print("\(scripts.count) script\(scripts.count > 1 ? "s" : "") cached at \(cacheDir)")
323+
guard let maxLength = resolved.map(\.0.count).max() else { return }
324+
resolved.forEach { (name, path) in
325+
print(name + String(repeating: " ", count: maxLength - name.count + 2) + path.pathString)
326+
}
327+
}
328+
}
329+
}
330+
333331
/// Executes the executable at the specified path.
334332
fileprivate func run(
335333
_ executablePath: AbsolutePath,

0 commit comments

Comments
 (0)