55 lines
1.3 KiB
Swift
55 lines
1.3 KiB
Swift
import ArgumentParser
|
|
import CliClient
|
|
import Dependencies
|
|
|
|
struct BuildCommand: AsyncParsableCommand {
|
|
|
|
static let commandName = "build"
|
|
|
|
static let configuration = CommandConfiguration.playbook(
|
|
commandName: commandName,
|
|
abstract: "Build a home performance assesment project.",
|
|
examples: (label: "Build Project", example: "\(commandName) /path/to/project")
|
|
)
|
|
|
|
@OptionGroup var globals: GlobalOptions
|
|
|
|
@Argument(
|
|
help: "Path to the project directory.",
|
|
completion: .directory
|
|
)
|
|
var projectDir: String
|
|
|
|
@Argument(
|
|
help: "Extra arguments / options passed to the playbook."
|
|
)
|
|
var extraOptions: [String] = []
|
|
|
|
mutating func run() async throws {
|
|
try await _run()
|
|
|
|
// try await runPlaybook(
|
|
// commandName: Self.commandName,
|
|
// globals: globals,
|
|
// extraArgs: extraArgs,
|
|
// "--tags", "build-project",
|
|
// "--extra-vars", "project_dir=\(projectDir)"
|
|
// )
|
|
}
|
|
|
|
private func _run() async throws {
|
|
@Dependency(\.cliClient) var cliClient
|
|
|
|
try await cliClient.runPlaybookCommand(
|
|
globals.playbookOptions(
|
|
arguments: [
|
|
"--tags", "build-project",
|
|
"--extra-vars", "project_dir=\(projectDir)"
|
|
],
|
|
configuration: nil
|
|
),
|
|
logging: globals.loggingOptions(commandName: Self.commandName)
|
|
)
|
|
}
|
|
}
|