This project adheres to Semantic Versioning.
- Updated documentation to reflect the current implementation of
sourceandtargettask caching behavior.
- Tasks can now specify a
sourceandtargetto avoid unnecessary work.
- Use the directory of the config file as the working directory for finding the env-file location, instead of the actual working directory.
- Completions are now more likely to produce useful output and less likely to print error messages to the CLI.
- Handle multi-line usage for args and options in help text.
- Valid values are now listed as part of help text for args and options.
- Default values are now listed as part of help text for options.
- Improved error messages for invalid values passed as arguments and options.
- Updated go releaser action with necessary permissions.
- Arguments may now specify a
type, which works the same way as options. - Boolean options may now be rewritten into strings using
rewrite. - Environment variables are now automatically parsed from
.envfiles. - Additional environment variable files can be specified with
env-file.
- Arguments and options are now properly validated when passed to sub-tasks.
- Short names may no longer be provided for private options.
- Installation with
go installis now officially supported.
- Improved handling of colons in bash completion.
- The
quietclause is now available for commands and tasks to quiet additional logging.
- Added fish completions.
- Fixed an issue where certain behavior might unintentionally run during tab completions.
- Fixed an issue where XDG_DATA_HOME was respected incorrectly when installing bash completions.
- Commands to install and uninstall completion will now appear in the help documentation.
- The interpreter used for running commands can now be configured using the
top-level
interpreterclause in the YAML configuration.
- The interpreter now allows for specifying an arbitrary command and series of
arguments, so interpreters like
nodeorrubythat happen to use a flag other than-cmay be specified. - The interpreter settings now also apply to commands run as part of
whenandoptionclauses.
- BREAKING: To avoid inadvertantly picking up unrelated shell settings, the
environment variable
SHELLis no longer considered an override for the command interpreter.
- The
includeclause is now available to include task definitions from other files.
- Completions now correctly escape ":" characters in command and flag names.
- The
commandclause now accepts aprintoption to override the command text that is printed to screen. - The
commandclause now acccepts adiroption to change the working directory for that command.
- The
commandclause now has a longer form, where string literals now map to theexecfield. This longer form allows additional options such asprintto be specified in a command when necessary while maintaining backward compatibility.
- BREAKING: Unspecified fields in the YAML or duplicate map keys should
more consistently raise errors when parsing. Some
tusk.ymlfiles with issues that were treated as valid in previous versions may no longer be considered valid.
- BREAKING: Setting environment variables with
environmenthas been removed in favor ofset-environment.
- Fix issue where args could be passed to tasks out of order.
- Support Alpine Linux with binary releases.
- Support
not-existscheck insidewhenclauses.
- Bash and zsh completion can be installed and uninstalled by command-line.
- Help text for commands now includes arguments section.
- Include subtask hierarchy on command run.
- UI theme is now slightly more colorful.
- Hidden task names do not appear in console output.
- Add short form for
whenclauses to express equal-true relationships.
- Add
finallyclause 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
whenitem now evaluates to true if ANY tests pass rather than if ALL tests pass. Allwhenitems in a clause must still pass. environmentclauses inwhenitems now support mapping a single key to multiple values.
- BREAKING: Remove deprecated
not_equalsyntax 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
nameandusagecan 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.yamlas alternate config file name.
- Support environment variable conditional in
whenclauses.
- 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_equalshould 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
environmentinrunclauses should be replaced withset-environment. This is to make the behavior distinction from otherenvironmentclauses clear.
- Support lists of
whenitems.
- Individual
whenitems 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.
- BREAKING: 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.
- BREAKING: Environment variables can no longer be set inside of an
optionclause. Usingenvironmentinside arunclause is the replacement behavior.
- Fix issue with Zsh tab completions.
- Add
valuesfield 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
runclause. This replaces theexportfunctionality 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
optionclause. Usingenvironmentinside arunclause is the replacement behavior.
- Windows is now supported.
- New -s/--silent global option available for no stderr/stdout.
- BREAKING: Shell commands are now executed by the
SHELLenvironment variable by default. IfSHELLis not set,shis 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
--helpoutput.
- 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 unmarshaling.
- 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.