summaryrefslogtreecommitdiff
path: root/bin/rcdn
diff options
context:
space:
mode:
Diffstat (limited to 'bin/rcdn')
-rwxr-xr-xbin/rcdn53
1 files changed, 53 insertions, 0 deletions
diff --git a/bin/rcdn b/bin/rcdn
new file mode 100755
index 0000000..8695c63
--- /dev/null
+++ b/bin/rcdn
@@ -0,0 +1,53 @@
+#!/bin/sh
+
+: ${RCM_LIB:=`dirname $0`/../share/rcm}
+. $RCM_LIB/rcm.sh
+
+handle_command_line() {
+ local arg_tags=
+ local verbosity=0
+ local version=0
+ local dotfiles_dirs=
+ local files=
+
+ while getopts Vqvt:d: opt; do
+ case "$opt" in
+ t) arg_tags="$arg_tags $OPTARG" ;;
+ v) verbosity=$(($verbosity + 1));;
+ q) verbosity=$(($verbosity - 1));;
+ d) dotfiles_dirs="$dotfiles_dirs $OPTARG" ;;
+ V) version=1
+ esac
+ done
+ shift $(($OPTIND-1))
+
+ handle_common_flags rcup $version $verbosity
+
+ tags=${arg_tags:-$TAGS}
+ 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
+ LS_ARGS="$LS_ARGS -d $dotfiles_dir"
+ done
+ LS_ARGS="$LS_ARGS $files"
+
+ $DEBUG "LS_ARGS: $LS_ARGS"
+}
+
+if [ -e $HOME/.rcrc ]; then
+ . $HOME/.rcrc
+fi
+
+handle_command_line $*
+
+for dest_and_src in `lsrc $LS_ARGS`; do
+ dest=`echo $dest_and_src | sed 's/:.*//'`
+ src=`echo $dest_and_src | sed 's/.*://'`
+
+ $RM -rf $dest
+ rmdir -p `dirname $dest` 2>/dev/null
+done