1
0
Fork 0
mirror of synced 2024-12-04 14:45:36 -05:00

Compare commits

...

5 commits

Author SHA1 Message Date
Turing Eret
0e804e28ce
Merge 1aecf166f7 into ec10041024 2024-11-26 10:30:13 -05:00
Erik Flodin
ec10041024
Call bootstrap scripts with a tty
Inspired by #449 but using read instead of mapfile to make it work with bash
3. Fixes #344.
2024-11-24 20:18:22 +01:00
Erik Flodin
3a1b236147
Link features in README.md to yadm.io (as suggested in #346) 2024-11-24 17:03:56 +01:00
Turing Eret
1aecf166f7
Quiet the output from auto_alt 2024-02-16 09:55:05 -07:00
Turing Eret
fccbd9348e
Add the ability to quiet output of the 'alt' command by passing the -q
flag
2024-02-16 07:49:58 -07:00
3 changed files with 39 additions and 20 deletions

View file

@ -18,11 +18,12 @@
**yadm** is a tool for managing [dotfiles][].
* Based on [Git][], with full range of Git's features
* Supports system-specific alternative files or templated files
* Encryption of private data using [GnuPG][], [OpenSSL][], [transcrypt][], or
[git-crypt][]
* Customizable initialization (bootstrapping)
* Customizable hooks for before and after any operation
* Supports system-specific [alternative][feature-alternates] files or
[templated][feature-templates] files
* [Encryption][feature-encryption] of private data using [GnuPG][],
[OpenSSL][], [transcrypt][], or [git-crypt][]
* 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
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-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
[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
[git-crypt]: https://github.com/AGWA/git-crypt
[homebrew-badge]: https://img.shields.io/homebrew/v/yadm.svg

View file

@ -14,11 +14,16 @@ if [[ ! -d "$BOOTSTRAP_D" ]]; then
exit 1
fi
find -L "$BOOTSTRAP_D" -type f | sort | while IFS= read -r bootstrap; do
if [[ -x "$bootstrap" && ! "$bootstrap" =~ "##" && ! "$bootstrap" =~ "~$" ]]; then
if ! "$bootstrap"; then
echo "Error: bootstrap '$bootstrap' failed" >&2
exit 1
fi
declare -a bootstraps
while IFS= read -r bootstrap; do
if [[ -x "$bootstrap" && ! "$bootstrap" =~ "##" && ! "$bootstrap" =~ ~$ ]]; then
bootstraps+=("$bootstrap")
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
done

26
yadm
View file

@ -77,6 +77,10 @@ CHANGES_POSSIBLE=0
# 0: skip auto_bootstrap, 1: ask, 2: perform bootstrap, 3: prevent bootstrap
DO_BOOTSTRAP=0
# flag to indicate if the program should be quiet or not
# YES: be quiet, NO: be more noisy
QUIET="NO"
function main() {
require_git
@ -120,7 +124,7 @@ function main() {
-a) # used by list()
LIST_ALL="YES"
;;
-d) # used by all commands
-d|--debug) # used by all commands
DEBUG="YES"
;;
-f) # used by init(), clone() and upgrade()
@ -130,6 +134,9 @@ function main() {
DO_LIST="YES"
[[ "$YADM_COMMAND" =~ ^(clone|config)$ ]] && YADM_ARGS+=("$1")
;;
-q|--quiet) # used by all commands
QUIET="YES"
;;
-w) # used by init() and clone()
YADM_WORK="$(qualify_path "$2" "work tree")"
shift
@ -246,7 +253,7 @@ function score_file() {
record_template "$tgt" "$cmd" "$src"
else
debug "No supported template processor for template $src"
[ -n "$loud" ] && echo "No supported template processor for template $src"
[ "$QUIET" = "NO" ] && echo "No supported template processor for template $src"
fi
return 0
# unsupported values
@ -586,10 +593,6 @@ function alt() {
local local_distro_family
set_local_alt_values
# only be noisy if the "alt" command was run directly
local loud=
[ "$YADM_COMMAND" = "alt" ] && loud="YES"
# decide if a copy should be done instead of a symbolic link
local do_copy=0
[ "$(config --bool yadm.alt-copy)" == "true" ] && do_copy=1
@ -734,7 +737,7 @@ function alt_linking() {
if [ -n "$template_cmd" ]; then
# a template is defined, process the template
debug "Creating $tgt from template $src"
[ -n "$loud" ] && echo "Creating $tgt from template $src"
[ "$QUIET" = "NO" ] && echo "Creating $tgt from template $src"
# ensure the destination path exists
assert_parent "$tgt"
# remove any existing symlink before processing template
@ -743,7 +746,7 @@ function alt_linking() {
elif [ -n "$src" ]; then
# a link source is defined, create symlink
debug "Linking $src to $tgt"
[ -n "$loud" ] && echo "Linking $src to $tgt"
[ "$QUIET" = "NO" ] && echo "Linking $src to $tgt"
# ensure the destination path exists
assert_parent "$tgt"
if [ "$do_copy" -eq 1 ]; then
@ -1200,6 +1203,11 @@ Commands:
yadm git-crypt [OPTIONS] - Run git-crypt commands for the yadm repo
yadm transcrypt [OPTIONS] - Run transcrypt commands for the yadm repo
General Options:
--help - Display this help message
-d, --debug - Enable debug output
-q, --quiet - Suppress output
Files:
\$HOME/.config/yadm/config - yadm's configuration file
\$HOME/.config/yadm/encrypt - List of globs to encrypt/decrypt
@ -2069,7 +2077,7 @@ function auto_alt() {
if [ "$CHANGES_POSSIBLE" = "1" ] ; then
auto_alt=$(config --bool yadm.auto-alt)
if [ "$auto_alt" != "false" ] ; then
[ -d "$YADM_REPO" ] && alt
[ -d "$YADM_REPO" ] && QUIET="YES" alt
fi
fi