1
0
Fork 0
mirror of synced 2024-06-01 06:41:11 -04:00
Commit graph

193 commits

Author SHA1 Message Date
Tim Byrne 616baaeac6
Rename default template processor 2019-10-30 17:29:17 -05:00
Tim Byrne b62a4c77a6
Create an upgrade command
This command will assist users with migration from 1.x.x to 2.0.0.
2019-10-23 17:08:04 -05:00
Tim Byrne 0c9468c9b5
Ignore encrypted files (#69)
Append the contents of .config/yadm/encrypt to the repo's git ignore
list. This is to help prevent accidentally committing unencrypted
sensitive data.
2019-10-17 08:22:17 -05:00
Tim Byrne f3249e00b5
Ensure base directories for alternates before creation 2019-10-12 18:22:02 -05:00
Tim Byrne 6d5467951a
Properly handle missing "." in alternate conditions 2019-10-12 09:59:03 -05:00
Tim Byrne 4ea3ed9e2a
Allow storing alternates elsewhere (#90)
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.
2019-10-12 09:59:02 -05:00
Tim Byrne aeb6a54ad7
Add source to templates (#163)
A new variable is exposed to templates, which holds the filename of the
template source. The primary use case is to be able to include a warning
message within the template. For example:

  # Do not edit. This file auto-generated from {{ yadm.source }}.
2019-10-11 07:23:52 -05:00
Tim Byrne 3a192db420
Remove symlinks before processing a template 2019-10-11 07:20:03 -05:00
Tim Byrne 574945f010
Change yadm.cygwin-copy to yadm.alt-copy
This removes the constraint of only allowing the copy option on Cygwin
systems. Now any system can configure this option.
2019-10-09 18:47:42 -05:00
Tim Byrne b2ef6d2e09
Merge pull request #102 from rasa/rasa-add-mingw-msys-support 2019-10-09 07:48:56 -05:00
Tim Byrne f3bde37f78
Support -b <branch> when cloning (#133) 2019-10-08 17:28:53 -05:00
Tim Byrne 6a3199ceea
Support DISTRO in alternates (#72) 2019-10-06 16:35:47 -05:00
Tim Byrne 444622a658
Support else statements in builtin templates 2019-10-05 11:43:48 -05:00
Tim Byrne e999929818
Change builtin templates to resemble jinja 2019-10-02 15:16:41 -05:00
Tim Byrne b411f9d74f
Split out processing of stale links 2019-10-02 15:16:10 -05:00
Tim Byrne 0438e383e5
Unify the way alternate file strings are matched 2019-10-02 15:16:10 -05:00
Tim Byrne 3ba17f41fd
Fix a known bug with hidden private files 2019-10-02 15:16:10 -05:00
Tim Byrne cfda485b34
Implement future alternate processing 2019-10-02 15:16:02 -05:00
Tim Byrne f3ae31f1c2
Separate alternate linking code from other operations 2019-09-27 08:40:32 -05:00
Tim Byrne e4e956fe21
Split discovery of alternates test data into a testable function 2019-09-27 08:40:32 -05:00
Tim Byrne c29292d02b
Split out processing of alt (past/future) 2019-09-27 08:40:31 -05:00
Tim Byrne 289b8e0c6c
Remove unnecessary continuation backslashes 2019-09-27 08:40:31 -05:00
Tim Byrne cec8778578
Align continuation backslashes 2019-09-27 08:40:31 -05:00
Tim Byrne 48fc6b0db7
Support XDG base directory specification
https://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html
2019-09-27 08:40:31 -05:00
Tim Byrne f0ad40376d
Create YADM_HOOKS variable for hooks dir 2019-08-06 08:19:01 -05:00
Tim Byrne a399c35e4e
Add quoting 2019-07-29 08:00:09 -05:00
Daniel Wagenknecht b404a87a89
Replace direkt calls to git with $GIT_PROGRAM
Some calls to git ignored the yadm.gpg-program configuration option
and called the first git found in $PATH instead. Make them adhere to
the configured git program by replacing the call with $GIT_PROGRAM.
2019-07-16 21:45:14 +02:00
Tim Byrne 4613c1d0c4
Merge pull request #114 from bb010g/patch-1 2019-04-12 07:57:35 -05:00
Tim Byrne d245f633bf
Remove invalid linked alternates (#65) 2019-04-10 09:23:34 -05:00
Tim Byrne a2cc970dd6
Remove unnecessary Git invocations
`git ls-files` was being called multiple times during the processing of
alternates. This is now run once, and kept in an array.
2019-04-09 07:53:27 -05:00
Tim Byrne 2375a0955b
Standardize sort order
Prevent localizations from interfering with sorting order.
2019-04-05 08:58:30 -05:00
Tim Byrne 0c6be5e398
Fix bug with alternate linked directories
Previously the tracked files were sorted, and then the files and their
parent directories were considered for possible alternates. Depending on
the length of directories and names of files, inconsistencies would
occur because the directory separator (/) would be part of the sorting.

To fix this, a unique list of tracked files and their parent directories
are sorted into a single list which is processed.
2019-04-05 08:58:30 -05:00
Tim Byrne 2aa1710214
Remove superfluous ; in comments 2019-03-24 17:22:11 -05:00
Tim Byrne 58edf313aa
Process .yadm/encrypt in sorted order 2019-03-24 17:05:11 -05:00
Tim Byrne 402b57880d
Update GPLv3 LICENSE information
This does NOT change the licensing.
2019-03-14 18:25:02 -05:00
Stig Palmquist d075438308
support multiple keys in yadm.gpg-recipient 2019-01-20 20:26:18 +01:00
Brayden Banks 0b9f537909
Allow for more complex Jinja templates
By calling envtpl with a filename, Jinja can perform includes, which is useful for more general machine configuration.
2018-06-11 19:31:10 -07:00
Ross Smith II 54f7cbcebe Fix OS name match for Cygwin/Msys 2018-03-05 07:02:46 -08:00
Ross Smith II 315ad0873e Fix OS check to match (Cygwin|Msys)* 2018-03-04 06:34:08 -08:00
Ross Smith II adfedf4b64 Add Mingw/Msys support 2018-03-03 20:02:45 -08:00
Tim Byrne 09a018ea5a
Release 1.12.0
Update version number and update documentation

* Add basic Zsh completion (#71, #79)
* Support directories in `.yadm/encrypt` (#81, #82)
* Support exclusions in `.yadm/encrypt` (#86)
* Improve portability with printf (#87)
* Eliminate usage of `eval` and `ls`
2017-10-24 22:12:23 -05:00
Thomas Luzat ac2aed9ab4
Indentation: Convert tab to space 2017-10-09 15:21:32 +02:00
Tim Byrne d411db9f6f
Consolidate cd to YADM_WORK 2017-09-22 12:30:24 -05:00
Tim Byrne c24906ec10
Handle exclusions in .yadm/encrypt (#86) 2017-09-21 14:21:23 -05:00
Tim Byrne f23bdb8147
Remove last use of LS_PROGRAM
Globs are not determined by an `eval` of `ls` anymore. The only other
use of `ls` can be replaced with a simple `printf`.
2017-09-16 09:33:12 -05:00
Tim Byrne b78bb1eef4
Eliminate the use of eval
`eval` has always been used to process the globs in `.yadm/encrypt`.
This is being removed, as there is a risk of executing "dirty" data
found in `.yadm/encrypt`.

Caveats of this change:
  * Brace and tilde expansion will no longer work in `.yadm/encrypt`
  * Paths with spaces must not be quoted anymore
2017-09-16 09:32:38 -05:00
Tim Byrne 57866714c4
Replace echo with printf (#87) 2017-09-15 18:35:41 -05:00
Tim Byrne abf6cd1c4c
Merge pull request #81 from japm48/patch-1
Add support for directories in .yadm/encrypt
2017-09-04 13:22:21 -05:00
Tim Byrne 5d4f3aac5b
Release 1.11.1
Update version number and update documentation

* Create private dirs prior to merge (#74)
2017-08-23 07:28:35 -05:00
Tim Byrne ebc90bfc98
Create secured private dirs (#74)
Directories are created prior to merge during clone, and prior to any
Git command run.

This directly addresses CVE-2017-11353.

When cloning a repo which includes data in a .ssh or .gnupg directory,
if those directories do not exist at the time of cloning, yadm will
create the directories with mask 0700 prior to merging the fetched data
into the work-tree.

When running a Git command and .ssh or .gnupg directories do not exist,
create those directories with mask 0700 prior to running the Git
command. However, do not create those directories if
yadm.auto-private-dirs is false.
2017-08-22 21:28:07 -05:00
japm48 8e3a5dbf47 Fix for issue #81
See details in #81
2017-08-20 06:55:59 +02:00
Tim Byrne 4b5b6c44d3
Release 1.11.0
Update version number and update documentation

* Option for Cygwin to copy files instead of symlink (#62)
* Support `YADM_DISTRO` in Jinja templates (#68)
* Support pre/post hooks for every command (#70)
2017-07-09 23:07:50 -05:00
Tim Byrne 0168bcfb5e
Query worktree directly from repo 2017-07-05 16:32:54 -05:00
Tim Byrne 61270c8277
Prevent command from running if "pre" hook fails 2017-07-05 08:12:29 -05:00
Tim Byrne f73c873681
Expose some internal data to all hooks
* Command run by yadm
* Full commandline arguments
* Repo directory
* Worktree
* Exit status (for post hooks)
2017-07-05 08:12:29 -05:00
Tim Byrne 35743e3711
Tie "post" hooks to yadm exits
There are many cases where yadm may exit early (particularly when
encountering an error).
2017-07-03 16:25:23 -05:00
Tim Byrne 880964e2b2
Some initial tweaks to hooks
* No not require `.sh` extension. Hooks can be written in any language.
* Use `[` for the `-x` test
* Clean up debug message and formatting
2017-07-03 16:25:03 -05:00
Tim Byrne df21cd2cb8
Merge pull request #70 from cweagans/hooks
Dropping changes to `yadm.md` and `CONTRIBUTORS`. These are built
programmatically during releases.
2017-07-03 16:24:13 -05:00
Tim Byrne 5293db986a
Support YADM_DISTRO in Jinja templates (#68) 2017-07-03 16:21:27 -05:00
Cameron Eagans 41409631a1 Add script hooks 2017-06-22 17:32:16 -06:00
Tim Byrne 7538851fe3
Gracefully handle changes in yadm.cygwin-copy 2017-06-01 17:06:27 -05:00
Tim Byrne f8e0bd593d
Support yadm.cygwin-copy configuration (#62)
With `yadm.cygwin-copy` set to "true", alternate files will be copies
instead of symlinks, but only when running on Cygwin.
2017-05-31 18:28:54 -05:00
Tim Byrne 68937f3cad
Release 1.10.0
Update version number and update documentation

* Fix `COMP_WORDS bad array subscript` bug (#64)
* Transition to semantic versioning
2017-05-10 17:46:37 -05:00
Tim Byrne 246eab8b52
Release 1.09
Update version number and update documentation

* Add Bash completion script (#60)
* Support WSL detection (#61)
* Add introspect command (used by completion)
2017-05-04 07:22:48 -05:00
Tim Byrne 356c47a19f
Add Bash completion script (#60)
* Add completion script
* Add introspection
2017-04-24 07:49:10 -05:00
Tim Byrne eabf9091fb
Support WSL detection (#61)
`uname -s` was already being executed every run for *cygwin* detection.
I've consolidated all of the OS detection into a single function. This
also fixed the problem of running `uname -s` twice for the `alt`
command.
2017-04-09 08:47:18 -05:00
Tim Byrne df4652d6de
Release 1.08
Update version number and update documentation

* Fix bug alternates based on `CLASS` (#51)
* Support globs and paths with space in .yadm/encrypt (#53, #54)
* Add support for alternate files using Jinja templates (#56, #58)
* Add `enter` command, for creating a sub-shell (#57)
* Support local.hostname properly (#59)
2017-04-03 07:09:32 -05:00
Tim Byrne 9824de5410
Change template indicator to ##yadm.j2 2017-03-31 16:42:51 -05:00
Tim Byrne 588bc6eafe
Support local.hostname properly (#59) 2017-03-31 12:43:32 -05:00
Tim Byrne 00133032ef
Add minor improvements to template processing
* Determine envtpl using `command -v` instead of `which` (more portable)
* Anchor the end of template file names in regex
* Quote variables to allow for whitespace in file names
2017-03-30 23:51:23 -05:00
Tim Byrne aaa4152fac
Remove trailing whitespace 2017-03-30 21:58:26 -05:00
Tim Byrne fd6fa8c923
Merge pull request #58 from janschulz/jinja_processing
Excluding yadm.md changes (these will happen during a release)
2017-03-30 17:00:27 -05:00
Tim Byrne 4e05be7020
Set prompt for sub-shells 2017-03-30 16:30:22 -05:00
Tim Byrne 1c34bc8e7f
Merge pull request #57 from renard/enter-function 2017-03-30 16:28:31 -05:00
Jan Schulz a479b70d8a Add jinja processing to alt command
With the new functionality, when the 'alt' command is called (or automatically
triggered), any file with a name ending in '##yadm_tmpl' is treated as a jinja
template. The template is processed by envtpl and the result is written to a
file without the '##yadm_tmpl' name. The variables passed into the template
processing are

  YADM_CLASS
  YADM_OS
  YADM_HOSTNAME
  YADM_USER

These variables are set according to the normal rules for
CLASS, OS, HOSTNAME, and USER during the alt processing.
2017-03-26 03:49:24 +02:00
Tim Byrne 5678e383d8
Give priority to CLASS by processing those patterns separately (#51) 2017-03-25 12:55:46 -05:00
Tim Byrne 5141433776
Support encrypt globs and paths with space (#53, #54) 2017-03-24 17:37:40 -05:00
Sébastien Gross 831461e91e Add enter function for easier interaction with git repo.
Run a subshell with all git variables set. This can be used to easily
interact with your git repository. This is also useful if you are using
Emacs Tramp and magit to manage your directory.

Signed-off-by: Sébastien Gross <seb•ɑƬ•chezwam•ɖɵʈ•org>
2017-03-21 11:53:13 +01:00
Tim Byrne def7e732db
Release 1.07
Update version number and update documentation

* Add `CLASS` to supported alt-link patterns (#21)
* Add bootstrap command (#42)
* Support wildcards for alt-links (#43)
* Stash conflicting data during clone (#44)
* Offer bootstrap after successful clone (#45)
* Display supported configs for `yadm config` (#46)
* Add "curl-pipe" program to clone without installation (#48)
* Fix bug in alt-link regular expressions (#49)
2017-02-10 14:53:52 -08:00
Tim Byrne f2b2b64750
Bring man page up-to-date with new features 2017-02-03 07:36:53 -06:00
Tim Byrne 2a7203a67b
Unset GIT_DIR prior to executing bootstrap 2017-01-30 21:20:37 -06:00
Tim Byrne a612a98136
Explicitly read answers from /dev/tty
This is necessary if **yadm** is started by piping it into `bash`.
2017-01-27 17:08:07 -06:00
Tim Byrne 7f6fe24280
Indicate stash should be run from within $HOME 2017-01-27 08:23:15 -06:00
Tim Byrne d28df86494
Store class/os/host/user overrides in the local repo config
Overrides are meant to be local to each system, unlike other
configurations which are often added to a user's dotfiles repository.

With this change, the configurations change names:

  alt.class => local.class
  alt.os    => local.os
  alt.host  => local.host
  alt.user  => local.user
2017-01-26 10:48:40 -06:00
Tim Byrne 76d90db627
Replace "TODO text" for yadm config (#46) 2017-01-25 17:31:56 -06:00
Tim Byrne 08e6cd40cb
Offer bootstrap after clone (#45) 2017-01-25 08:41:17 -06:00
Tim Byrne e82c4dac4c
Add bootstrap command (#42) 2017-01-23 17:53:40 -06:00
Tim Byrne 7d3c9e1cb5
Run auto-alt after yadm config 2017-01-23 17:53:40 -06:00
Tim Byrne e2d8742a40
Support stashing of conflicting data during clone (#44) 2017-01-20 17:11:23 -06:00
Tim Byrne ce4ed41f10
Support custom classes for alt-links (#21)
Class can be set using `yadm config alt.class <class>`
2017-01-20 00:14:10 -06:00
Tim Byrne 3b4c405d7f
Allow override of OS/Host/User (#21) 2017-01-18 19:51:28 -06:00
Tim Byrne eaa252f721
Implement alt-link wildcards (#43) 2017-01-18 01:46:51 -06:00
Tim Byrne 02bf83c5ef
Restrict alt-link delimiter to a period (#49) 2017-01-16 17:52:04 -06:00
Tim Byrne 672c985e88
Release 1.06
Update version number and update documentation

* Improve portability of `hostname` (#23)
* Fix incompatibilities between Cygwin and Git for Windows (#26)
* Allow Git program to be configured via yadm.git-program (#30)
* Support alt-links for encrypted files (#34)
* Exit with the same return value as Git (#35)
* Support spaces in alt-link paths (#36)
* Ignore empty lines in .yadm/encrypt (#40)
* Fix typos (#41)
2017-01-12 17:15:46 -06:00
Tim Byrne fe0ddd4c1a
Merge pull request #26 from cnaj/master 2017-01-08 20:33:46 -06:00
Tim Byrne eba6557ae8
Ignore empty lines/whitespace lines in .yadm/encrypt (#40) 2017-01-08 11:11:01 -06:00
Tim Byrne 2a956d15ad
Allow Git program to be configured via yadm.git-program (#30) 2017-01-07 19:47:25 -06:00
Tim Byrne 044c6e4d62
Support alt-links for encrypted files (#34) 2017-01-07 16:13:47 -06:00
Tim Byrne 635468b707
Check exit code directly (SC2181) 2017-01-06 17:05:28 -06:00
Tim Byrne 2033e5673e
Merge pull request #35 from shkitch/master 2017-01-06 16:31:09 -06:00