CLIFoundation

0.7.0

henrik-dmg/CLIFoundation

What's New

CommandBuilder API

2021-05-03T18:41:13Z

With Swift 5.4, we finally got @resultBuilder so now there's a new CommandBuilder to make construction commands even easier. You can use it like this:

let command = Command("jazzy") {
    Argument("some-argument")
    Option("theme", value: "full-width")
    if someCondition {
        Flag("verbose")
    }
}

As you might have noticed though, ShellCommand has been renamed to Command

CLIFoundation

A collection of helper methods and types to make creating CLI in Swift a breeze.

Shell

With CLIFoundation you can easily launch bash commands in Swift. You can either run a command directly or construct a ShellCommand to get a safe command that will be formatted correctly automatically

Raw Command:

try Shell.execute("git -C some/repo/path commit -m \"Some commit message\" --no-verify")

Using ShellCommand:

let command = ShellCommand("git")
	.appending(option: "C", value: "some/repo/path")
	.appending(argument: "commit")
	.appending(option: "m", value: "\"Some commit message\"")
	.appending(flag: "no-verify")
try Shell.execute(command)

Text

CLIFoundation supports text styling with these methods:

return "This what we want to print to the terminal"
	.addingTerminalColor(.red)
	.addingTerminalBackgroundColor(.yellow)
	.addingTerminalTextDecoration(.bold)

or through a combined convenience method:

return "This what we want to print to the terminal"
	.addingTerminalStyling(color: .red, backgroundColor: .yellow, decoration: .bold)

Contribution

I don't have a contribution guide and all that fancy stuff so if you want to implement changes or add new stuff, feel free to do so and just assign me the PR. Happy coding! :-)

Description

  • Swift Tools 5.4.0

Dependencies

  • None
Last updated: Fri May 14 2021 09:08:28 GMT-0500 (GMT-05:00)