From e82c4dac4c447a9f3579b1172cb8711f83443ff8 Mon Sep 17 00:00:00 2001 From: Tim Byrne Date: Mon, 23 Jan 2017 17:23:06 -0600 Subject: [PATCH] Add bootstrap command (#42) --- yadm | 27 ++++++++++++++++++++++++++- 1 file changed, 26 insertions(+), 1 deletion(-) diff --git a/yadm b/yadm index bcacb5f..036a9b0 100755 --- a/yadm +++ b/yadm @@ -28,6 +28,7 @@ YADM_REPO="repo.git" YADM_CONFIG="config" YADM_ENCRYPT="encrypt" YADM_ARCHIVE="files.gpg" +YADM_BOOTSTRAP="bootstrap" GPG_PROGRAM="gpg" GIT_PROGRAM="git" @@ -48,7 +49,7 @@ function main() { #; parse command line arguments local retval=0 - internal_commands="^(alt|clean|clone|config|decrypt|encrypt|help|init|list|perms|version)$" + internal_commands="^(alt|bootstrap|clean|clone|config|decrypt|encrypt|help|init|list|perms|version)$" if [ -z "$*" ] ; then #; no argumnts will result in help() help @@ -170,6 +171,15 @@ function alt() { } +function bootstrap() { + + bootstrap_available || error_out "Cannot execute bootstrap\n'$YADM_BOOTSTRAP' is not an executable program." + + echo "Executing $YADM_BOOTSTRAP" + exec "$YADM_BOOTSTRAP" + +} + function clean() { error_out "\"git clean\" has been disabled for safety. You could end up removing all unmanaged files." @@ -521,6 +531,13 @@ function process_global_args() { YADM_OVERRIDE_ARCHIVE="$2" shift ;; + --yadm-bootstrap) #; override the standard YADM_BOOTSTRAP + if [[ ! "$2" =~ ^/ ]] ; then + error_out "You must specify a fully qualified bootstrap path" + fi + YADM_OVERRIDE_BOOTSTRAP="$2" + shift + ;; *) #; main arguments are kept intact MAIN_ARGS+=("$1") ;; @@ -537,6 +554,7 @@ function configure_paths() { YADM_CONFIG="$YADM_DIR/$YADM_CONFIG" YADM_ENCRYPT="$YADM_DIR/$YADM_ENCRYPT" YADM_ARCHIVE="$YADM_DIR/$YADM_ARCHIVE" + YADM_BOOTSTRAP="$YADM_DIR/$YADM_BOOTSTRAP" #; independent overrides for paths if [ -n "$YADM_OVERRIDE_REPO" ]; then @@ -551,6 +569,9 @@ function configure_paths() { if [ -n "$YADM_OVERRIDE_ARCHIVE" ]; then YADM_ARCHIVE="$YADM_OVERRIDE_ARCHIVE" fi + if [ -n "$YADM_OVERRIDE_BOOTSTRAP" ]; then + YADM_BOOTSTRAP="$YADM_OVERRIDE_BOOTSTRAP" + fi #; use the yadm repo for all git operations GIT_DIR=$(mixed_path "$YADM_REPO") @@ -661,6 +682,10 @@ function require_ls() { LS_PROGRAM=ls fi } +function bootstrap_available() { + [ -f "$YADM_BOOTSTRAP" ] && [ -x "$YADM_BOOTSTRAP" ] && return + return 1 +} #; ****** Directory tranlations ******