This commit is contained in:
52
Sources/hpa/UtilsCommands/InstallDependenciesCommand.swift
Normal file
52
Sources/hpa/UtilsCommands/InstallDependenciesCommand.swift
Normal file
@@ -0,0 +1,52 @@
|
||||
import ArgumentParser
|
||||
import CliDoc
|
||||
import CommandClient
|
||||
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(\.commandClient) var commandClient
|
||||
@Dependency(\.playbookClient) var playbookClient
|
||||
|
||||
let arguments = [
|
||||
"brew", "install"
|
||||
] + Constants.brewPackages
|
||||
+ extraOptions
|
||||
|
||||
try await commandClient.run(
|
||||
quiet: globals.quiet,
|
||||
shell: globals.shell,
|
||||
arguments
|
||||
)
|
||||
|
||||
try await playbookClient.repository.install()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user