From 975b347b7206a0e9caeeea8349e4765b4db654f9 Mon Sep 17 00:00:00 2001 From: Mike Burns Date: Fri, 16 Aug 2013 15:42:56 +0200 Subject: Pre-up, post-up, pre-down, and post-down hooks These are programs that, if they exist, will run before or after the syncronization/removal is run. Three use cases caused this: 1. The thoughtbot dotfiles will run a vundle installation set of commands after intitial synchronization. 2. I changed the location of `.bash_history` to `.bash/history` and wanted to move `.bash_history` to `.bash/history` after up to preserve existing history. 3. Moving from an existing old-style custom install script to `rcup` might require some cleanup; this happened in practice, and required a simple script. --- bin/lsrc | 2 +- bin/rcdn | 5 +++++ bin/rcup | 9 +++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) (limited to 'bin') diff --git a/bin/lsrc b/bin/lsrc index f7f4826..1ea2e2c 100755 --- a/bin/lsrc +++ b/bin/lsrc @@ -140,7 +140,7 @@ is_metafile() { host_portion=`echo $1 | sed -e 's/host-.*/host-/'` tag_portion=`echo $1 | sed -e 's/tag-.*/tag-/'` - [ x$host_portion = 'xhost-' -o x$tag_portion = 'xtag-' ] + [ x$host_portion = 'xhost-' -o x$tag_portion = 'xtag-' -o "x$1" = "xhooks" ] } dotfiles_dir_excludes() { diff --git a/bin/rcdn b/bin/rcdn index d809796..cae9dc8 100755 --- a/bin/rcdn +++ b/bin/rcdn @@ -70,6 +70,9 @@ if [ -e $HOME/.rcrc ]; then fi handle_command_line $* +: ${DOTFILES_DIRS:=$DOTFILES_DIRS $DEFAULT_DOTFILES_DIR} + +run_hooks pre down for dest_and_src in `lsrc $LS_ARGS`; do saved_ifs=$IFS @@ -81,3 +84,5 @@ for dest_and_src in `lsrc $LS_ARGS`; do remove_link $dest $dest $sigil done + +run_hooks post down diff --git a/bin/rcup b/bin/rcup index 5f51192..5a42a81 100755 --- a/bin/rcup +++ b/bin/rcup @@ -119,13 +119,13 @@ handle_command_line() { handle_common_flags rcup $version $verbosity tags=${arg_tags:-$TAGS} - dotfiles_dirs=${dotfiles_dirs:-$DOTFILES_DIRS} + DOTFILES_DIRS=${dotfiles_dirs:-$DOTFILES_DIRS} files=$@ for tag in $tags; do LS_ARGS="$LS_ARGS -t $tag" done - for dotfiles_dir in $dotfiles_dirs; do + for dotfiles_dir in $DOTFILES_DIRS; do LS_ARGS="$LS_ARGS -d $dotfiles_dir" done for exclude in $excludes; do @@ -146,6 +146,9 @@ if [ -e $HOME/.rcrc ]; then fi handle_command_line $* +: ${DOTFILES_DIRS:=$DOTFILES_DIRS $DEFAULT_DOTFILES_DIR} + +run_hooks pre up for dest_and_src in `lsrc $LS_ARGS`; do saved_ifs=$IFS @@ -162,3 +165,5 @@ for dest_and_src in `lsrc $LS_ARGS`; do handle_file $src $dest $sigil done + +run_hooks post up -- cgit v1.2.3