Compare commits
10 commits
4a583d65e8
...
78eb48938a
Author | SHA1 | Date | |
---|---|---|---|
|
78eb48938a | ||
|
ec10041024 | ||
|
3a1b236147 | ||
|
69f6dbeebc | ||
|
9ed1af1fab | ||
|
04544b4d8f | ||
|
89d7df0d1b | ||
|
c6b4bde04c | ||
|
cee2b5753c | ||
|
7b76dabe7b |
3 changed files with 129 additions and 13 deletions
16
README.md
16
README.md
|
@ -18,11 +18,12 @@
|
||||||
**yadm** is a tool for managing [dotfiles][].
|
**yadm** is a tool for managing [dotfiles][].
|
||||||
|
|
||||||
* Based on [Git][], with full range of Git's features
|
* Based on [Git][], with full range of Git's features
|
||||||
* Supports system-specific alternative files or templated files
|
* Supports system-specific [alternative][feature-alternates] files or
|
||||||
* Encryption of private data using [GnuPG][], [OpenSSL][], [transcrypt][], or
|
[templated][feature-templates] files
|
||||||
[git-crypt][]
|
* [Encryption][feature-encryption] of private data using [GnuPG][],
|
||||||
* Customizable initialization (bootstrapping)
|
[OpenSSL][], [transcrypt][], or [git-crypt][]
|
||||||
* Customizable hooks for before and after any operation
|
* Customizable initialization ([bootstrapping][feature-bootstrap])
|
||||||
|
* Customizable [hooks][feature-hooks] for before and after any operation
|
||||||
|
|
||||||
Complete features, usage, examples and installation instructions can be found on
|
Complete features, usage, examples and installation instructions can be found on
|
||||||
the [yadm.io][website-link] website.
|
the [yadm.io][website-link] website.
|
||||||
|
@ -63,6 +64,11 @@ The star count helps others discover yadm.
|
||||||
[develop-commits]: https://github.com/yadm-dev/yadm/commits/develop
|
[develop-commits]: https://github.com/yadm-dev/yadm/commits/develop
|
||||||
[develop-date]: https://img.shields.io/github/last-commit/yadm-dev/yadm/develop.svg?label=develop
|
[develop-date]: https://img.shields.io/github/last-commit/yadm-dev/yadm/develop.svg?label=develop
|
||||||
[dotfiles]: https://en.wikipedia.org/wiki/Hidden_file_and_hidden_directory
|
[dotfiles]: https://en.wikipedia.org/wiki/Hidden_file_and_hidden_directory
|
||||||
|
[feature-alternates]: https://yadm.io/docs/alternates
|
||||||
|
[feature-bootstrap]: https://yadm.io/docs/bootstrap
|
||||||
|
[feature-hooks]: https://yadm.io/docs/hooks
|
||||||
|
[feature-encryption]: https://yadm.io/docs/encryption
|
||||||
|
[feature-templates]: https://yadm.io/docs/templates
|
||||||
[gh-pages-badge]: https://img.shields.io/github/actions/workflow/status/yadm-dev/yadm/test.yml?branch=gh-pages
|
[gh-pages-badge]: https://img.shields.io/github/actions/workflow/status/yadm-dev/yadm/test.yml?branch=gh-pages
|
||||||
[git-crypt]: https://github.com/AGWA/git-crypt
|
[git-crypt]: https://github.com/AGWA/git-crypt
|
||||||
[homebrew-badge]: https://img.shields.io/homebrew/v/yadm.svg
|
[homebrew-badge]: https://img.shields.io/homebrew/v/yadm.svg
|
||||||
|
|
|
@ -14,11 +14,16 @@ if [[ ! -d "$BOOTSTRAP_D" ]]; then
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
find -L "$BOOTSTRAP_D" -type f | sort | while IFS= read -r bootstrap; do
|
declare -a bootstraps
|
||||||
if [[ -x "$bootstrap" && ! "$bootstrap" =~ "##" && ! "$bootstrap" =~ "~$" ]]; then
|
while IFS= read -r bootstrap; do
|
||||||
if ! "$bootstrap"; then
|
if [[ -x "$bootstrap" && ! "$bootstrap" =~ "##" && ! "$bootstrap" =~ ~$ ]]; then
|
||||||
echo "Error: bootstrap '$bootstrap' failed" >&2
|
bootstraps+=("$bootstrap")
|
||||||
exit 1
|
fi
|
||||||
fi
|
done < <(find -L "$BOOTSTRAP_D" -type f | sort)
|
||||||
|
|
||||||
|
for bootstrap in "${bootstraps[@]}"; do
|
||||||
|
if ! "$bootstrap"; then
|
||||||
|
echo "Error: bootstrap '$bootstrap' failed" >&2
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
|
|
109
yadm
109
yadm
|
@ -99,7 +99,7 @@ function main() {
|
||||||
|
|
||||||
# parse command line arguments
|
# parse command line arguments
|
||||||
local retval=0
|
local retval=0
|
||||||
internal_commands="^(alt|bootstrap|clean|clone|config|decrypt|encrypt|enter|git-crypt|help|--help|init|introspect|list|perms|transcrypt|upgrade|version|--version)$"
|
internal_commands="^(alt|bootstrap|clean|clone|config|decrypt|encrypt|enter|echo|git-crypt|help|--help|init|introspect|list|perms|transcrypt|upgrade|version|--version)$"
|
||||||
if [ -z "$*" ] ; then
|
if [ -z "$*" ] ; then
|
||||||
# no argumnts will result in help()
|
# no argumnts will result in help()
|
||||||
help
|
help
|
||||||
|
@ -144,7 +144,7 @@ function main() {
|
||||||
[ ! -d "$YADM_WORK" ] && error_out "Work tree does not exist: [$YADM_WORK]"
|
[ ! -d "$YADM_WORK" ] && error_out "Work tree does not exist: [$YADM_WORK]"
|
||||||
HOOK_COMMAND="$YADM_COMMAND"
|
HOOK_COMMAND="$YADM_COMMAND"
|
||||||
invoke_hook "pre"
|
invoke_hook "pre"
|
||||||
$YADM_COMMAND "${YADM_ARGS[@]}"
|
${YADM_COMMAND/echo/yecho} "${YADM_ARGS[@]}"
|
||||||
else
|
else
|
||||||
# any other commands are simply passed through to git
|
# any other commands are simply passed through to git
|
||||||
HOOK_COMMAND="$1"
|
HOOK_COMMAND="$1"
|
||||||
|
@ -1199,6 +1199,7 @@ Commands:
|
||||||
yadm enter [COMMAND] - Run sub-shell with GIT variables set
|
yadm enter [COMMAND] - Run sub-shell with GIT variables set
|
||||||
yadm git-crypt [OPTIONS] - Run git-crypt commands for the yadm repo
|
yadm git-crypt [OPTIONS] - Run git-crypt commands for the yadm repo
|
||||||
yadm transcrypt [OPTIONS] - Run transcrypt commands for the yadm repo
|
yadm transcrypt [OPTIONS] - Run transcrypt commands for the yadm repo
|
||||||
|
yadm echo [OPTIONS] - View yadm internal commands and file paths
|
||||||
|
|
||||||
Files:
|
Files:
|
||||||
\$HOME/.config/yadm/config - yadm's configuration file
|
\$HOME/.config/yadm/config - yadm's configuration file
|
||||||
|
@ -1485,6 +1486,110 @@ function version() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function print_variables(){
|
||||||
|
local local_class
|
||||||
|
local local_system
|
||||||
|
local local_host
|
||||||
|
local local_user
|
||||||
|
local local_distro
|
||||||
|
set_local_alt_values
|
||||||
|
|
||||||
|
if [[ -z "$2" ]]; then
|
||||||
|
echo "Yadm variables:
|
||||||
|
distro=$local_distro
|
||||||
|
system=$local_system
|
||||||
|
hostname=$local_host
|
||||||
|
user=$local_user
|
||||||
|
class=$local_class
|
||||||
|
"
|
||||||
|
else
|
||||||
|
case "$2" in
|
||||||
|
class)
|
||||||
|
echo $local_class
|
||||||
|
;;
|
||||||
|
system)
|
||||||
|
echo $local_system
|
||||||
|
;;
|
||||||
|
host)
|
||||||
|
echo $local_host
|
||||||
|
;;
|
||||||
|
user)
|
||||||
|
echo $local_user
|
||||||
|
;;
|
||||||
|
distro)
|
||||||
|
echo $local_distro
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$2 is not a valid option"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
function print_paths(){
|
||||||
|
if [[ -z "$2" ]] ; then
|
||||||
|
echo "yadm paths:
|
||||||
|
repo=$YADM_REPO
|
||||||
|
yadm_dir=$YADM_DIR
|
||||||
|
config=$YADM_CONFIG
|
||||||
|
encrypt=$YADM_ENCRYPT
|
||||||
|
archive=$YADM_ARCHIVE
|
||||||
|
"
|
||||||
|
else
|
||||||
|
case "$2" in
|
||||||
|
repo)
|
||||||
|
echo $YADM_REPO
|
||||||
|
;;
|
||||||
|
dir|yadm_dir)
|
||||||
|
echo $YADM_DIR
|
||||||
|
;;
|
||||||
|
config)
|
||||||
|
echo $YADM_CONFIG
|
||||||
|
;;
|
||||||
|
encrypt)
|
||||||
|
echo $YADM_ENCRYPT
|
||||||
|
;;
|
||||||
|
archive)
|
||||||
|
echo $YADM_ARCHIVE
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo " in path "
|
||||||
|
echo "$2 is not a valid option"
|
||||||
|
esac
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function yecho() {
|
||||||
|
#verify internal yadm variables
|
||||||
|
|
||||||
|
if [[ $# -eq 0 ]] ; then
|
||||||
|
print_variables
|
||||||
|
print_paths
|
||||||
|
fi
|
||||||
|
|
||||||
|
while [[ $# -gt 0 ]] ; do
|
||||||
|
case "$1" in
|
||||||
|
vars|variables)
|
||||||
|
print_variables "${YADM_ARGS[@]}"
|
||||||
|
if [[ ! -z "$2" ]] ; then
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
paths|path)
|
||||||
|
print_paths "${YADM_ARGS[@]}"
|
||||||
|
if [[ ! -z "$2" ]] ; then
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo "$1 is not a valid command"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
# ****** Utility Functions ******
|
# ****** Utility Functions ******
|
||||||
|
|
||||||
function exclude_encrypted() {
|
function exclude_encrypted() {
|
||||||
|
|
Loading…
Reference in a new issue