This project adheres to Semantic Versioning.
- Help text for commands now includes arguments section.
- Add short form for
when
clauses to express equal-true relationships.
- Add
finally
clause to run cleanup logic after tasks have completed. This clause takes the same arguments asrun
.
- Update UI theme to include more relevant information in normal and verbose modes.
- Short-flag combination is now supported.
- A
when
item now evaluates to true if ANY tests pass rather than if ALL tests pass. Allwhen
items in a clause must still pass. environment
clauses inwhen
items now support mapping a single key to multiple values.
- Remove deprecated
not_equal
syntax in favor ofnot-equal
.
- Positional arguments for tasks are now supported. All positional arguments specified in the config file are required.
- Tagline is now "the modern task runner".
- Help documentation for flags with placeholder options now display them using angular brackets.
- Minor changes to certain error messages.
- Top-level keys
name
andusage
can be changed in the config file to update help documentation. This supports aliasing different config files to be used as custom CLI tools. - Support
tusk.yaml
as alternate config file name.
- Support environment variable conditional in
when
clauses.
- Warnings now appear more consistently for deprecated functionality.
- Help documentation for flags is now more consistently structured.
- Several configuration keys have been renamed. While the original names are still supported, they have been deprecated and will be removed in a future release. See the deprecated section for details.
- The key name
not_equal
should be replaced withnot-equal
. This change is to reinforce the convention for naming multi-word keys such as flag names using kebab case. - The key name
environment
inrun
clauses should be replaced withset-environment
. This is to make the behavior distinction from otherenvironment
clauses clear.
- Support lists of
when
items.
- Individual
when
items should no longer contain multiple validations for AND logic. Multiple validations for OR logic will be added in a future release.
- Invoking the same sub-task multiple times with different options now assigns the options to each sub-task correctly.
- Short flags with arguments now offer Bash/Zsh completions correctly.
- Interpolation is now done per task. This has the following effects:
- Sub-task options are no longer exposed to the command line.
- Sub-task options are now exposed in run clauses and can be passed by a parent task to a sub-task.
- Shared options are only exposed when used directly by the invoked task and not when invoked by sub-tasks.
- Tasks and sub-tasks can define options with the same name.
- Sub-tasks can now be defined in any order.
- Sub-tasks no longer execute multiple times per reference in situations where the same sub-task is referenced in multiple places.
- Environment variables can no longer be set inside of an
option
clause. Usingenvironment
inside arun
clause is the replacement behavior.
- Fix issue with Zsh tab completions.
- Add
values
field for options. Any option directly passed by command line flag or environment variable must be one of the listed values, if specified. - Add completion for option values.
- Fix issue where global flags with hyphens are sometimes skipped during interpolation.
- Fix various issues with Zsh tab completions.
- Environment variables can now be set and unset inside of a
run
clause. This replaces theexport
functionality that was previously underoption
. - Tasks can now be defined as private.
- Change to more minimalistic UI output theme.
- Log-level messages (Debug, Info, Warning, and Error) are now printed in title case instead of all caps.
- Environment variables should no longer be set inside of an
option
clause. Usingenvironment
inside arun
clause is the replacement behavior.
- Windows is now supported.
- New -s/--silent global option available for no stderr/stdout.
- Shell commands are now executed by the
SHELL
environment variable by default. IfSHELL
is not set,sh
is used. - Commands and flags are now listed in alphabetical order.
- Avoid infinite loop when searching for tusk.yml in non-unix file systems.
- Remove redundant error message for non-exit exec errors.
- Improve error messaging for non-generic yaml parsing errors.
- Fix indentation for the task list in
--help
output.
- Include expected value for skipped run clauses during verbose logging.
- Bash and Zsh completions offer file completion for subcommand flags that take a value rather than re-offering flag names.
- The default value for numeric types is now
0
, and the default for booleans is nowfalse
. Previously, it was an empty string for both.
- Bash and Zsh completions now complete global flags and task flags.
- Zsh completion now includes usage information.
- Application no longer errors when referencing the same shared option in both a task and its sub-task. Redefinitions are still disallowed.
- Completions for Bash and Zsh are now bundled with releases and automatically installed with Homebrew.
- Homepage is now listed for Homebrew formula.
- Help documentation is no longer displayed during incorrect usage.
- Passing the help flag now prevents code execution and prints help.
- Homebrew test command is now functional.
- Options may now be required.
- Options can be exported to environment variables.
- Improve error handling in custom yaml unmarshalling.
- Exit for unexpected errors occuring during when clause validation.
- Use exit code 1 for all unexpected errors.
- Unexpected arguments now cause an error.
- Remove piping of command stdout/stderr to improve support for interactive tasks.
- Short names cannot exceed one character in length.
- The recommended way to install the latest stable version is now Homebrew or downloading directly from the GitHub releases page.
- Fix interpolation for tasks with only private options.