Tusk is a yaml-based task runner. By creating a tusk.yml
in the root of a
repository, Tusk becomes a custom command line tool with minimal configuration.
Details on the usage and configuration options can be found in the project documentation.
- Customizable: Specify your own tasks and options with support for command-line flags, environment variables, conditional logic, and more.
- Explorable: All the help you need to get started is available straight from the command line. Help documentation is generated dynamically, and support for Bash and Zsh tab completion is available.
- Accessible: Built for usability with a simple YAML configuration, familiar syntax for passing options, Bash-like variable interpolation, and a colorful terminal output.
- Zero Dependencies: All you need is a single binary file to get started on Linux, macOS, or Windows.
With Go 1.21+ installed:
go install github.com/rliebz/tusk@latest
On macOS, installation is also available through homebrew:
brew install rliebz/tusk/tusk
With Homebrew, tab completion is installed automatically.
The latest version can be downloaded from the releases page.
To install automatically:
curl -sL https://git.io/tusk | bash -s -- -b /usr/local/bin latest
To pin to a specific version, replace latest
with the tag for that version.
To install to another directory, change the path passed to -b
.
For bash:
tusk --install-completion bash
For fish:
tusk --install-completion fish
For zsh:
tusk --install-completion zsh
Completions can be uninstalled with the --uninstall-completion
flag.
Create a tusk.yml
file in the root of a project repository:
tasks:
greet:
usage: Say hello to someone
options:
name:
usage: A person to say "Hello" to
default: World
run: echo "Hello, ${name}!"
As long as there is a tusk.yml
file in the working or any parent directory,
tasks can be run:
$ tusk greet --name friend
Running: echo "Hello, friend!"
Hello, friend!
Help messages are dynamically generated based on the YAML configuration:
$ tusk --help
tusk - the modern task runner
Usage:
tusk [global options] <task> [task options]
Tasks:
greet Say hello to someone
Global Options:
-f, --file <file> Set file to use as the config file
-h, --help Show help and exit
...
Individual tasks have help messages as well:
$ tusk greet --help
tusk greet - Say hello to someone
Usage:
tusk greet [options]
Options:
--name <value> A person to say "Hello" to
Additional information on the configuration spec can be found in the project documentation.
For more detailed examples, check out the project's own tusk.yml
file.
Set-up instructions for a development environment and contribution guidelines can be found in CONTRIBUTING.md.