Skip to content

Commit 1d8d3dc

Browse files
committed
Port swift-help to swift-argument-parser
1 parent 1a6ff93 commit 1d8d3dc

File tree

3 files changed

+28
-35
lines changed

3 files changed

+28
-35
lines changed

Package.resolved

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,15 @@
11
{
22
"object": {
33
"pins": [
4+
{
5+
"package": "swift-argument-parser",
6+
"repositoryURL": "https://github.com/apple/swift-argument-parser.git",
7+
"state": {
8+
"branch": "master",
9+
"revision": "e870503c45f53e70d820a6ed0f694065a506e626",
10+
"version": null
11+
}
12+
},
413
{
514
"package": "llbuild",
615
"repositoryURL": "https://github.com/apple/swift-llbuild.git",

Package.swift

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ let package = Package(
4646
/// The help executable.
4747
.target(
4848
name: "swift-help",
49-
dependencies: ["SwiftOptions"]),
49+
dependencies: ["SwiftOptions", "ArgumentParser"]),
5050

5151
/// The `makeOptions` utility (for importing option definitions).
5252
.target(
@@ -61,11 +61,13 @@ if ProcessInfo.processInfo.environment["SWIFTCI_USE_LOCAL_DEPS"] == nil {
6161
.package(url: "https://github.com/apple/swift-tools-support-core.git", .branch("master")),
6262
.package(url: "https://github.com/apple/swift-llbuild.git", .branch("master")),
6363
.package(url: "https://github.com/jpsim/Yams.git", .branch("master")),
64+
.package(url: "https://github.com/apple/swift-argument-parser.git", .branch("master"))
6465
]
6566
} else {
6667
package.dependencies += [
6768
.package(path: "../swiftpm/swift-tools-support-core"),
6869
.package(path: "../yams"),
6970
.package(path: "../llbuild"),
71+
.package(path: "../swift-argument-parser"),
7072
]
7173
}

Sources/swift-help/main.swift

Lines changed: 16 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -10,42 +10,24 @@
1010
//
1111
//===----------------------------------------------------------------------===//
1212
import SwiftOptions
13-
import TSCBasic
14-
import TSCLibc
15-
import TSCUtility
13+
import ArgumentParser
1614

17-
extension DriverKind: StringEnumArgument {
18-
public static var completion: ShellCompletion { .none }
19-
}
20-
21-
struct Options {
22-
var driverKind: DriverKind = .interactive
23-
var showHidden: Bool = false
24-
}
15+
extension DriverKind: ExpressibleByArgument, Decodable {}
2516

26-
let driverOptionTable = OptionTable()
27-
let parser = ArgumentParser(commandName: "swift help",
28-
usage: " ",
29-
overview: "Swift help tool",
30-
seeAlso: nil)
31-
let binder = ArgumentBinder<Options>()
32-
binder.bind(option: parser.add(option: "-show-hidden",
33-
usage: "List hidden (unsupported) options"),
34-
to: { $0.showHidden = $1 })
35-
binder.bind(option: parser.add(option: "-tool", kind: DriverKind.self,
36-
usage: "The tool to list options of"),
37-
to: { $0.driverKind = $1 })
17+
struct SwiftHelp: ParsableCommand {
18+
@ArgumentParser.Option(name: .customLong("tool", withSingleDash: true),
19+
default: .interactive,
20+
help: "The tool to list options of")
21+
var tool: DriverKind
3822

39-
do {
40-
let parseResult = try parser.parse(Array(CommandLine.arguments.dropFirst()))
41-
var options = Options()
42-
try binder.fill(parseResult: parseResult, into: &options)
23+
@Flag(name: .customLong("show-hidden", withSingleDash: true),
24+
help: "List hidden (unsupported) options")
25+
var showHidden: Bool
4326

44-
// Print the option table.
45-
driverOptionTable.printHelp(driverKind: options.driverKind,
46-
includeHidden: options.showHidden)
47-
} catch {
48-
stderrStream <<< "error: " <<< error.localizedDescription
49-
stderrStream.flush()
50-
exit(EXIT_FAILURE)
27+
func run() throws {
28+
let driverOptionTable = OptionTable()
29+
driverOptionTable.printHelp(driverKind: tool, includeHidden: showHidden)
30+
}
5131
}
32+
33+
SwiftHelp.main()

0 commit comments

Comments
 (0)