- Fixed bug in
UpdateTask
where the migrations step was incorrectly reported as "failed" when the output of the check command contained warnings. - Fixed bug in
UpdateTask
where the dependency step was incorrectly reported as "skipped" when it was completed successfully.
- Fixed bug in
UpdateTask
where the migrations step was incorrectly reported as "skipped" when it was completed successfully.
IMPORTANT This release contains backwards incompatible changes.
With the added support for *.toml
format config files, settings
objects provided to function- and class-based tasks are now dictionaries, rather than objects created by ConfigParser
. Methods such as getint()
, getfloat()
, and getboolean()
are no longer available on these objects. Numbers, booleans, and arrays defined in TOML files are cast automatically thanks to TOML's native support for these types. To provide some level of consistency between the two file types, jogger
also casts certain values defined in non-TOML config files:
- booleans, provided they are defined as
true
orfalse
- arrays, provided they contain at least one newline character
No attempt is made to cast numbers.
In addition, the builtin LintTask
now uses ruff
in place of both flake8
and bandit
for greater speed and flexibility in linting Python code.
Finally, TestTask
now optionally supports running in parallel by default. In order to provide this support, the --src
argument has been removed, the corresponding --source
argument passed through to the underlying coverage
command is similarly removed, and the --branch
switch passed to the coverage
command is also removed. This is because command-line arguments are not respected when running tests in parallel (see `https://coverage.readthedocs.io/en/latest/subprocess.html`_). Both arguments can be configured using a coverage.py
config file.
Changes:
- Added support for
pyproject.toml
as a config file, in addition tosetup.cfg
. By extension, ajoggerenv.toml
file is also supported. - Added
DjangoTask
as a base class for Django-aware tasks. - Updated
LintTask
to useruff
instead offlake8
andbandit
for Python linting. - Updated
LintTask
to include a step for running Django system checks. - Updated
TestTask
to add the-c
and-n
arguments, as aliases for--cover
and--no-cover
, respectively. - Updated
TestTask
to recognise theparallel
setting, enabling tests to be configured to run in parallel by default. - Updated
TestTask
to remove the use of the coverage--branch
switch by default. It can be set via config file if desired. - Updated
TestTask
to support an--erase
option. Note that this should be used in place of runningcoverage erase
directly. - Updated
TestTask
reporting: a HTML coverage report is no longer generated by default, use--report
to generate one; the--no-html
is thus obsolete and is removed; test paths can no longer be passed when using--report
. - Updated
UpdateTask
to use Django 3.1's command to detect unapplied migrations. - Updated
UpdateTask
to support the--skip-pull
command line switch. - Updated
UpdateTask
to support theno_static_prompt
setting. - Updated
UpdateTask
to show a summary of the steps performed. - Improved
TaskProxy
to allow better handling of errors in nested tasks. - Improved
BaseTask
to allow graceful termination of long-running processes invoked via thecli()
method. They now return execution to the task itself, rather than raisingKeyboardInterrupt
.
- Fixed bug in
TaskProxy
when generating a task description, causing the standalonejog
command (called with no arguments) to crash.
- String-based and function-based tasks now use the same mechanism for executing commands on the command line as task-based classes. This allows these types of tasks to accept
--stdout
and--stderr
arguments to allow output stream redirection.
- Fixed bug where argument parsing would fail when calling a task without arguments from within another.
- Improved display of help text in various scenarios.
- Initial release