44 lines
1.1 KiB
Swift
44 lines
1.1 KiB
Swift
import ArgumentParser
|
|
import CliClient
|
|
import CliDoc
|
|
import Dependencies
|
|
|
|
struct InstallDependenciesCommand: AsyncParsableCommand {
|
|
static let commandName: String = "install-dependencies"
|
|
|
|
static let configuration = CommandConfiguration(
|
|
commandName: commandName,
|
|
abstract: createAbstract("Ensure required dependencies are installed"),
|
|
usage: .default(commandName: commandName, parentCommand: "utils", usesArguments: false),
|
|
discussion: Discussion {
|
|
VStack {
|
|
Note {
|
|
"Homebrew is required to install dependencies."
|
|
}
|
|
HStack {
|
|
"See Also:".yellow.bold.underline
|
|
"https://brew.sh"
|
|
}
|
|
ImportantNote.passingExtraArgs
|
|
}
|
|
.separator(.newLine(count: 2))
|
|
}
|
|
)
|
|
|
|
@OptionGroup var globals: BasicGlobalOptions
|
|
|
|
@Argument(
|
|
help: "Extra arguments / options to pass to the homebrew command."
|
|
)
|
|
var extraOptions: [String]
|
|
|
|
mutating func run() async throws {
|
|
@Dependency(\.cliClient) var cliClient
|
|
try await cliClient.installDependencies(
|
|
quiet: globals.quiet,
|
|
shell: globals.shell,
|
|
extraArgs: extraOptions
|
|
)
|
|
}
|
|
}
|