1
0
mirror of https://github.com/TheLocehiliosan/yadm synced 2024-10-27 20:34:27 +00:00
Commit Graph

149 Commits

Author SHA1 Message Date
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
Tim Byrne
39e5548347
Merge pull request #36 from roothybrid7/feature/alt-with-spaces 2017-01-06 10:35:03 -06:00
Tim Byrne
fd77d024dd
Improve portability of hostname (#23) 2017-01-05 16:59:22 -06:00
Satoshi Ohki
2140970157 Fixed yadm-alt to work even if whitespaces exist in filepath 2017-01-05 19:52:56 +09:00
Uroš Golja
763146043e Make yadm exit with the return value of git. 2016-12-24 01:12:35 +01:00
Tomas Cernaj
35da3eeb6e Make yadm work with Git for Windows under Cygwin
When using Git for Windows (a.k.a. msysGit) from Cygwin, git stumbles
over paths in Unix notation. Git for Windows only accepts Windows
paths (mixed notation is OK, for example `C:/GITREPO/`). This patch
converts paths passed to and from git to the appropriate notation using
cygpath if yadm is run under Cygwin and Git for Windows is detected.
2016-10-09 22:18:17 +02:00
Tim Byrne
05ed83ea34
Release 1.05
Update version number and update documentation

* Improve portability of shebang line (#14)
* Support for symlinked directories (#17)
* Improve portability of tar parameters (#18)
* Support alternate gpg program (#19)
* Fallback to using `ls` if `/bin/ls` does not exist (#22)
2016-09-08 08:08:22 -05:00
Tim Byrne
60eb4c415f
Fallback to using ls if /bin/ls does not exist (#22) 2016-08-28 22:06:14 -05:00
Tim Byrne
ce0acf1505
Support alternate gpg program (#19) 2016-08-14 23:53:26 -05:00
Tim Byrne
d500ccfbd9
Use -f - with tar -x, -c, and -t operations (#18) 2016-08-14 23:53:17 -05:00
Tim Byrne
fa286f0c9d
Support for symlinked directories (#17) 2016-08-14 23:53:12 -05:00
Tim Byrne
fea665eb34
Use #!/bin/sh for portability (#14) 2016-06-18 10:38:04 -05:00
Tim Byrne
d55725eafa
Improve portability of shebang line (#14) 2016-06-08 08:13:19 -05:00
Tim Byrne
f0a0015209
Release 1.04
Update version number and update documentation

  * Support alternate paths for yadm data (#4, #5)
  * Support asymmetric encryption (#7, #8)
  * Prevent the mixing of output and gpg prompts
2016-04-22 16:33:02 -05:00
Tim Byrne
aeb2e5d6c7 Prevent the mixing of output and gpg prompts 2016-04-21 10:00:12 -05:00
Tim Byrne
ea3b2ecfa8 Support yadm.gpg-recipient = ASK 2016-04-21 08:58:07 -05:00
Tim Byrne
5ad5b2df7e Double quote array expansion 2016-04-21 07:39:04 -05:00
Tim Byrne
fbaf5b6cf4 Merge pull request #8 from esphen/master 2016-04-21 07:33:49 -05:00
Espen Henriksen
34ae748408
#7 Add support for asymmetric encryption 2016-04-19 21:14:46 +02:00
Tim Byrne
ca63fddad0 Add support for path overrides
* `--yadm-repo`
  * `--yadm-config`
  * `--yadm-encrypt`
  * `--yadm-archive`
2016-04-08 17:31:00 -05:00
Tim Byrne
b662b31cd4 Resolve shellcheck errors in yadm 2016-04-07 08:16:22 -05:00
Tim Byrne
bbec7dd540 Handle errors during git fetch origin 2016-03-30 03:31:55 -05:00
Tim Byrne
301b537f15 Disable function calls if YADM_TEST=1
This is to allow loading the functions only during tests.
2016-03-23 19:16:21 -05:00
Tim Byrne
6918e1b7df Fix grammar 2016-03-23 19:14:25 -05:00
Tim Byrne
36a3482c8d Explicitly exit zero from main() 2016-03-23 19:13:04 -05:00
Tim Byrne
a60ed8b655 Add -Y/--yadm-dir options
An alternate yadm directory may be specified for every command. This
changes where the repository, configurations, and encrypted files are
located.
2016-03-23 02:48:21 -05:00
Tim Byrne
431f149730 Translate gitconfig to config inside git_command()
This consolidates calls to git_command()
2016-02-13 17:45:47 -06:00
Tim Byrne
10f8833968 Release 1.03
Update version number and update documentation
2016-01-08 21:47:17 -06:00
Tim Byrne
df7ccbd602 Determine user via id -u -n 2015-12-17 07:52:58 -06:00
Patrick Hof
9907ddb02e Added username matching for alternate files 2015-12-16 06:31:01 +01:00
Tim Byrne
0e7e92a3c1 Release 1.02
Update version number and update documentation
2015-08-12 00:56:36 -05:00
Tim Byrne
3a1a370efb Handle permissions for ~/.gnupg/*gpg
By default, gpg keyrings and configurations will have their permissions
locked down. The option `yadm.gpg-perms` can be used to disable.
2015-08-07 07:18:22 -05:00
Tim Byrne
cbb854a32b Release 1.01
Update version number and update documentation
2015-07-26 16:56:22 -05:00
Tim Byrne
eb60da77b8 Set status.showUntrackedFiles to "no"
Each time the yadm repository is initialized or cloned,
set `status.showUntrackedFiles` to "no". This prevents untracked files
and directories from showing up in status commands. This seems to be the
most sensible default, because usually there will be MANY untracked
files in a user's $HOME directory.
2015-07-26 16:55:32 -05:00
Tim Byrne
2024bd0bf1 Add a default alternate suffix of ##
Now yadm chooses these three suffixes in order:
 - `##SYSTEM.HOSTNAME`
 - `##SYSTEM`
 - `##`
2015-07-19 12:27:04 -05:00
Tim Byrne
df99648478 Change == to = 2015-07-17 16:21:47 -05:00
Tim Byrne
2ede46f5e4 Offer to add files.gpg if untracked 2015-07-16 21:38:51 -05:00
Tim Byrne
d1fe16407d Add option to list encrypted files 2015-07-16 20:57:53 -05:00
Tim Byrne
5c0237c4b6 Update permissions on the actual .ssh directory too 2015-07-16 17:26:02 -05:00
Tim Byrne
a403128b88 Complete the manpage, and sync the help in program 2015-07-16 17:25:13 -05:00
Tim Byrne
2655b39e5b Confirm targets exist before linking
Targets *might* exist in Git, but not in the work tree.
(especially when initially cloning)
2015-07-14 10:04:09 -05:00
Tim Byrne
943d146c62 Fix permission changes on Linux
`chmod -v` on OSX is non-standard and won't work elsewhere
2015-07-14 09:57:45 -05:00
Tim Byrne
886c5ada53 Fix merge notice 2015-07-14 08:16:45 -05:00
Tim Byrne
c941690295 Create first public version 2015-07-14 07:48:47 -05:00