* Simplify score_file() by using case in instead of nested ifs with regexps.
* Merge record_score() and record_template().
* Alt condition processing no longer stops when a template condition is seen
but continues processing to verify that all conditions are valid (as the
documentation says it should). Fixes#478.
* Support alt dirs with deeply nested tracked files (fixes#490).
* Use git ls-files to filter out which tracked files to consider for alt
processing. Should speed up auto-alt (#505).
* Use nocasematch when comparing distro and distro_family. Fixed#455.
* Update base image to Ubuntu 24.10. This uses a python version where j2cli no
longer works when installed using pip so use the version from Ubuntu instead
which has been patched to work.
* Update shellcheck, pylint, pytest, isort, flake8, black and yamllint to the
latest versions. This closes#502.
* Use a longer expect timeout to fix tests failing when gpg is killed due to
this timeout.
* Explicitly flush gpg-agent's cached passwords to fix failing tests with
latest gnupg. Also clean up after tests to avoid having gpg-agents running
after the test (e.g. when running tests directly without docker).
A local class is set with:
$ yadm config local.class cls1
More classes can be added with:
$ yadm config --add local.class cls2
$ yadm config --add local.class cls3
Any of cls1, cls2 and cls3 can be used in an alternate condition.
For templates, the existing variable yadm.class/YADM_CLASS is set to
the last class (i.e. cls3) to remain compatible with how it works
today and with what the following command gives:
$ yadm config local.class
For the default template processor there is no explicit yadm.classes
variable. Instead a yadm.class condition will check against all
classes.
For the other processors, a new template variable YADM_CLASSES will be
set to all classes separated by newline. For jinja2 templates a class
can be checked with: {%- if "cls" in YADM_CLASSES.split("\n") %}
For esh templates the logic is a bit more complex, but it is possible
to do.
Fixes#185.
This special condition doesn't affect the selection process and is only
supported to support syntax highlighting and language detection for alt files
as reported in #239.
This change allows alternates to be stored in "$YADM_DIR/alt". The
correct path within the work tree will be symlinked.
Storing alternates within the work tree is still allowed. Both locations
will be considered when choosing an appropriate alternate file.
The new test system is written with py.test. These tests are more
comprehensive, run faster by an order of magnitude, and are far more
maintainable. The tests themselves conform to PEP8.