This project adheres to Semantic Versioning.
- 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
.env
files. - 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 install
is now officially supported.
- Improved handling of colons in bash completion.
- The
quiet
clause 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
interpreter
clause in the YAML configuration.
- The interpreter now allows for specifying an arbitrary command and series of
arguments, so interpreters like
node
orruby
that happen to use a flag other than-c
may be specified. - The interpreter settings now also apply to commands run as part of
when
andoption
clauses.
- BREAKING: To avoid inadvertantly picking up unrelated shell settings, the
environment variable
SHELL
is no longer considered an override for the command interpreter.
- The
include
clause is now available to include task definitions from other files.
- Completions now correctly escape ":" characters in command and flag names.
- The
command
clause now accepts aprint
option to override the command text that is printed to screen. - The
command
clause now acccepts adir
option to change the working directory for that command.
- The
command
clause now has a longer form, where string literals now map to theexec
field. This longer form allows additional options such asprint
to 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.yml
files with issues that were treated as valid in previous versions may no longer be considered valid.
- BREAKING: Setting environment variables with
environment
has 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-exists
check insidewhen
clauses.
- 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
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.
- BREAKING: 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.
- 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
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.
- BREAKING: 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 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.