yadm-dev / yadm

Yet Another Dotfiles Manager
https://yadm.io/
GNU General Public License v3.0
5.11k stars 175 forks source link

Rewrite default template to handle nested ifs, != and env vars in if #497

Open erijo opened 3 days ago

erijo commented 3 days ago

What does this PR do?

The awk script now performs all processing in the BEGIN block using an implementation that is capable of handling nested if statements. This fixes #436. Includes are now handled in the same way as the main file which means that recursive includes and if statements in includes works as expected. This fixes #406.

All variables are handled in the same way now so it's now possible to use env variables in if statements. This fixes #488.

Also add support for != in addition to == (fixes #358). Thus it's now e.g. possible to check if a variable is set (#477) by doing:

{% if yadm.class != ""%}
Class is set to {{ yadm.class }}
{% endif %}

Possible breaking change: An error will be issued if a non-existent yadm or env variable is referenced in an if statement or in a variable substitution.

What issues does this PR fix or reference?

358

406

436

477

488

Previous Behavior

See above.

New Behavior

See above.

Have tests been written for this change?

Yes

Have these commits been signed with GnuPG?

Yes


Please review yadm's Contributing Guide for best practices.