1
0
mirror of https://github.com/TheLocehiliosan/yadm synced 2026-03-02 03:49:29 +00:00
Commit Graph

301 Commits

Author SHA1 Message Date
Erik Flodin
8ba9823407 Rewrite default template to handle nested ifs, != and env vars in if
The awk script now performs all processing in the BEGIN block using an
implementation that is capable of handling if statements which contain nested
if statments (fixes #436). To make nested ifs look better, if, else and endif
lines can now have optional whitespace before {%.

Includes are now handled in the same way as the main file which means that
included files can both include other files and have if statements in addition
to variables (fixes #406). Include lines can now also have optional whitespace
before {%.

All variables are handled in the same way now so it's now possible to use env
variables in if statements (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 %}

A non-existing yadm or env variable is now replaced with the empty string.
2024-11-04 22:30:23 +01:00
Tim Byrne
f9e0368385 Changes for new shellcheck compliance 2023-07-12 09:19:59 -05:00
Tim Byrne
2d4dcd05ef Update version number and update documentation
* Support spaces in distro/distro-family (#432)
* Fix zsh hanging when tab completing add/checkout (#417)
* Add yadm-untracked script to contributed files (#418)
* Fix documentation typos (#425)
* Support docker-like OCI engines for dev testing (#431)
2023-01-23 13:25:54 -06:00
Nicolas signed-log FORMICHELLA
8f390cf085 Accept _ as space substitutes
Replace all spaces in the ID/ID_LIKE scoring to allow for space
replacement

Signed-off-by: Nicolas signed-log FORMICHELLA <stigpro@outlook.fr>
2022-08-28 18:29:41 +02:00
Tim Byrne
abf6ea4b61 Update version number and update documentation
* Fix Bash 3 bad array subscript bug (#411)
2022-03-17 18:47:43 -05:00
Tim Byrne
f59d903769 Fix Bash 3 bad array subscript bug (#411) 2022-03-17 18:43:10 -05:00
Tim Byrne
82c0b6d02e Update version number and update documentation
* Support architecture for alternates/templates (#202, #203, #393)
* Support distro_family for alternates/templates (#213)
* Support setting multiple classes (#185, #304)
* Support environment variables in default template processor (#347)
* Update version command to include Bash & Git versions (#377)
2022-03-16 09:26:11 -05:00
Tim Byrne
46f72c2768 Add local.arch to config introspection 2022-02-21 14:09:57 -06:00
Tim Byrne
ebb6715aad Reduce supported labels for architecture 2022-02-21 14:01:08 -06:00
Tim Byrne
50bf8716cd Unify template support for classes (#185) 2022-02-21 11:31:44 -06:00
Tim Byrne
0b75e71237 Merge pull request #347 from rasa/develop 2022-02-17 16:45:45 -06:00
Tim Byrne
027c7359ac Merge pull request #304 from erijo/multiple-classes 2022-01-22 18:14:23 -06:00
Tim Byrne
5ae553b078 Add support for distro_family (#213)
Obtained from /etc/os-release: ID_LIKE.
Alternate attributes f & distro_family.
2022-01-22 18:05:15 -06:00
Tim Byrne
32bc9abb0c Include bash version 2022-01-17 11:45:09 -06:00
Tim Byrne
8186705059 Include Git version with yadm version (#377) 2022-01-17 09:12:41 -06:00
Erik Flodin
1aa9839096 Bump shellcheck to version 0.8.0 in docker image
And fix the new SC2295 warning.
2021-12-29 21:55:14 +01:00
Erik Flodin
2379d63068 Support overriding architecture
In the same way as os, hostname and user.
2021-12-27 22:21:18 +01:00
Erik Flodin
42c74efbac Add support for multiple local classes
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.
2021-12-27 21:14:09 +01:00
Tim Byrne
bacc948bba Support "YADM_ARCH" variable in esh templates 2021-12-23 15:43:29 -06:00
Tim Byrne
31e2ce56bc Support "arch" variable in built-in templates 2021-12-23 15:42:08 -06:00
Tim Byrne
85e05d311a Merge pull request #203 from jameshclrk/arch-alternative 2021-12-21 16:50:41 -06:00
Tim Byrne
f8abcd756b Update version number and update documentation
* Fix clone support for older versions of Git (#348)
* Fix support for multiple GPG recipients (#342)
* Find symlinks in bootstrap-in-dir (#340)
2021-08-23 08:25:10 -05:00
Tim Byrne
db78669479 Fix clone support for older versions of Git (#348) 2021-08-23 08:12:09 -05:00
Ross Smith II
73af421667 feat: Add support for env vars in templates 2021-06-06 10:37:14 -07:00
Tim Byrne
5adb486727 Fix support for multiple GPG recipients (#342) 2021-05-17 15:42:35 -05:00
Tim Byrne
a4d39c7504 Update version number and update documentation
* Use `git clone` directly during clone (#289, #323)
* Fix compatibility bug with Git completions (#318, #321)
* Support relative paths for --yadm-* and -w (#301)
* Improve parsing of if-statement in default template (#303)
* Read files without running cat in subshells (#317)
* Improve portability of updating read-only files (#320)
* Various code improvements (#306, #307, #311)
2021-04-03 12:00:02 -05:00
Tim Byrne
216aed2f87 Adjust special handling of existing read-only output files
Instead of duplicating the permissions on the temp file, the permissions
are duplicated on the output file directly. If the output file exists as
read-only, it is made writeable first.

There are some environments which don't allow the mv to work if the file
itself is read-only.
2021-02-28 10:55:37 -06:00
Tim Byrne
39773765ab Merge pull request #320 from rasa/rs/update-read-only-files 2021-02-27 18:36:58 -06:00
Ross Smith II
814e5f8ab3 Replace cats with reads (passes all tests)
Signed-off-by: Ross Smith II <ross@smithii.com>
2021-02-23 17:51:44 -08:00
Tim Byrne
d11e094f7b Merge pull request #303 from erijo/default-template-if 2021-02-15 12:57:45 -06:00
Tim Byrne
e6d7e6f174 Simplify return 2021-02-15 12:51:33 -06:00
Tim Byrne
999692fe5e Merge pull request #307 from rasa/rs/simplify_parse_encrypt 2021-02-15 12:45:31 -06:00
Tim Byrne
a8e5b20021 Move shellcheck option below license 2021-02-15 12:39:27 -06:00
Tim Byrne
8ece22ab2a Merge pull request #306 from rasa/rs/default-shellcheck 2021-02-15 12:33:22 -06:00
Tim Byrne
79f7aae073 Remove unnecessary [[ 2021-02-15 12:27:55 -06:00
Tim Byrne
88ee3f09fb Merge pull request #301 from erijo/relative-path 2021-02-15 12:11:21 -06:00
Tim Byrne
e6cfd39bbc Remove mktemp dependency 2021-02-03 22:46:48 -06:00
Ross Smith II
96471a6d68 Fix updating of readonly files 2021-01-30 18:17:59 -08:00
Ross Smith II
84136a8633 Remove unneeded duplicate line 2021-01-11 17:17:11 -08:00
Ross Smith II
0c788ae020 Simplify parse_encrypt by exiting early
if encrypt file doesn't exist.

Signed-off-by: Ross Smith II <ross@smithii.com>
2021-01-10 19:07:21 -08:00
Ross Smith II
fecbb315df Add 'shellcheck shell=bash' as the default
See https://github.com/koalaman/shellcheck/wiki/Directive#shell

Signed-off-by: Ross Smith II <ross@smithii.com>
2021-01-10 18:49:28 -08:00
Erik Flodin
e2ed647c2a Tighten up parsing of if-statement in default template
Require space after if and an ending %} after the condition.
2021-01-10 20:53:12 +01:00
Erik Flodin
accec694f5 Deinit submodules before removing the repo
when forcing init/clone to happen.
2021-01-08 22:21:35 +01:00
Erik Flodin
f45e66d4da Rework clone
Instead of doing work to find the default branch just to be able to
set up the repository before doing a fetch, do a "git clone" and let
git handle it.

Use -c core.sharedrepository=0600 to get the same result as
--shared=0600 passed to init.

Use --separate-git-dir to get the git directory in $YADM_REPO. Use a
temporary dir as work tree and remove it right after the clone is
done.

When the clone is done, iterate over all missing files in $YADM_WORK
and perform a checkout. If local files exists that differ compared
with the cloned ones the local files are left intact and the user is
instructed to deal with the conflicts.
2021-01-08 22:05:46 +01:00
Erik Flodin
a321c88c7c Support passing relative paths to --yadm-* and -w
Relative paths are expanded relative the current working dir as
expected.
2021-01-08 21:45:55 +01:00
Tim Byrne
a5b1067e02 Update version number and update documentation
* Fix parsing by sh (#299)
2021-01-07 10:49:26 -06:00
Tim Byrne
b32025bcc3 Fix parsing by sh (#299) 2021-01-07 10:46:06 -06:00
Tim Byrne
afab29c5fc Update version number and update documentation
* Improve handling of submodules at upgrade (#284, #285, #293)
* Improve Zsh completions (#292, #298)
* Use stderr for error messages (#297)
2021-01-07 09:24:11 -06:00
Erik Flodin
6378fe3073 Print errors to stderr
This makes it possible to run e.g. "yadm -Y foo introspect repo
2>/dev/null" and get an empty output instead of getting the error
message about foo not being fully qualified.
2021-01-05 21:57:32 +01:00
Erik Flodin
5818eeb9dd Change handling of submodules at upgrade
Start with doing "submodule absorbgitdirs" as otherwise "submodule
deinit" will fail if a module has been cloned first and later added as
a submodule (as it will then contain the .git dir instead of it being
under the superprojects .git dir).

Then try to deinit the submodules before moving the repo and abort the
upgrade if it fails for any submodule. Then do the move and finally
initialize the submodules that were initialized before the upgrade.

See #285
2021-01-04 18:31:24 +01:00