Commit Graph

594 Commits

Author SHA1 Message Date
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

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 2f00dabcdb
Make order of attributes match precedence 2021-12-23 15:51:18 -06:00
Tim Byrne 4caf5f681e
Add arch to manpage 2021-12-23 15:43:36 -06:00
Tim Byrne 4843e1fa14
Add arch to template tests 2021-12-23 15:43:30 -06: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 0ecb9c4f2f
Merge pull request #390 from Stig124/fix-makefile2 2021-11-29 12:55:15 -06:00
Nicolas stig124 FORMICHELLA 344b740d9b
Fix Makefile portability
OBS *among others* need to copy files from the build folder to the
package folder.
With the old version, that wasn't possible, as it would try to install the software in the worker folder,
of course something denied on public instances.
Adding $(DESTDIR) before all paths ensure that you can install to another folder
2021-11-25 22:30:43 +01:00
Tim Byrne 9aaefa60fe
Merge pull request #373 from exic/patch-1 2021-11-03 08:57:00 -05:00
Tim Byrne 6c57bdd8fb
Merge pull request #380 from dessert1/patch-1 2021-11-03 08:45:17 -05:00
dessert1 ed4a60257d
fix “Mackbook” typo in manpage 2021-10-22 16:03:23 +02:00
Jonas 9beed3307f
Fix arch-badge
Obviously yadm was moved from AUR to Community repository :-)
2021-09-10 10:49:27 +02: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
Tim Byrne 1544413c91
Merge pull request #340 from rasa/patch-3 2021-08-23 08:05:53 -05:00
Tim Byrne 5adb486727
Fix support for multiple GPG recipients (#342) 2021-05-17 15:42:35 -05:00
Ross Smith II c144d9f3bb
fix: Find symlinks in bootstrap-in-dir
Fixes #339
2021-05-06 20:11:36 -07: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 034045f58c
Fix man formatting 2021-03-22 13:36:58 -05:00
Tim Byrne 1998a8ed50
Fix typo 2021-03-22 13:28:57 -05:00
Tim Byrne 6cdbc92c64
Merge pull request #323 from erijo/man-new-clone 2021-03-22 13:26:30 -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
Tim Byrne 8cc30193f3
Merge pull request #317 from rasa/rs/remove-cats 2021-02-27 18:28:58 -06:00
Ross Smith II 814e5f8ab3
Replace cats with reads (passes all tests)
Signed-off-by: Ross Smith II <>
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 1461b1ac33
Merge pull request #311 from erijo/test-upgrade-typo 2021-02-15 12:42:17 -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
Erik Flodin 7b1bfac12b
Update the man page to match new clone behavior (from #289) 2021-02-08 23:00:13 +01:00
Tim Byrne c4327d0099
Fix compatibility bug with Git completions (#318)
Git 2.30.0 removed an internal function yadm completion depended upon.
This change retains the old function call for compatibility.
2021-02-07 16:30:27 -06:00
Tim Byrne 31071d9ac9
Clarify error message
Conflicts are not stashed anymore
2021-02-04 00:06:00 -06:00
Tim Byrne e6cfd39bbc
Remove mktemp dependency 2021-02-03 22:46:48 -06:00
Tim Byrne 9c999c7998
Merge pull request #289 from erijo/clone 2021-02-03 21:18:24 -06:00
Ross Smith II 96471a6d68
Fix updating of readonly files 2021-01-30 18:17:59 -08:00
Erik Flodin 990b4ce119
Fix typo in test (can_upgraded_... -> can_upgrade_...) 2021-01-17 19:07:36 +01: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 <>
2021-01-10 19:07:21 -08:00
Ross Smith II fecbb315df
Add 'shellcheck shell=bash' as the default

Signed-off-by: Ross Smith II <>
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 fb56513d17
zsh: complete all supported git clone parameters for yadm clone 2021-01-08 22:21:27 +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

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
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