diff --git a/Executable/Sources/Commands/BuildCommand.swift b/Executable/Sources/Commands/BuildCommand.swift new file mode 100644 index 0000000..be1fc08 --- /dev/null +++ b/Executable/Sources/Commands/BuildCommand.swift @@ -0,0 +1,29 @@ +import ArgumentParser +import ColibriLibrary + +extension Colibri { + struct Build: AsyncParsableCommand { + + // MARK: Properties + + static let configuration = CommandConfiguration( + commandName: "build-project", + abstract: "Build a Hummingbird app", + helpNames: .shortAndLong, + aliases: ["build"] + ) + + @OptionGroup var options: Options + + // MARK: Functions + + mutating func run() async throws { + let terminalService = TerminalService() + + let buildProject = BuildProjectTask(terminalService: terminalService) + + try await buildProject(at: options.locationURL) + } + + } +} diff --git a/Executable/Sources/Options/BuildOptions.swift b/Executable/Sources/Options/BuildOptions.swift new file mode 100644 index 0000000..9396639 --- /dev/null +++ b/Executable/Sources/Options/BuildOptions.swift @@ -0,0 +1,13 @@ +import ArgumentParser +import ColibriLibrary + +extension Colibri.Build { + struct Options: ParsableArguments, Locationable { + + // MARK: Properties + + @Option(name: .shortAndLong) + var location: String? + + } +}