summaryrefslogtreecommitdiff
path: root/bin/rcdn
diff options
context:
space:
mode:
authorGravatar Mike Burns <mike@mike-burns.com>2013-08-04 10:35:14 -0400
committerGravatar Mike Burns <mike@mike-burns.com>2013-08-05 04:21:21 +0200
commit63b50643b0ffd287d0070e494625056a05081ce8 (patch)
tree0ee843065deed78edf646f11f8d46ff28c6964ba /bin/rcdn
parent17c803d03d20f84cb37873e05d1539dbe7d43a77 (diff)
Introduce exclusion patterns
The lsrc(1), rcup(1), and rcdn(1) commands now take any number of `-e` flags, used to specify an exclusion pattern. This can also be controlled via rcrc(5), the `EXCLUDES` variable. An exclusion pattern specifies a file glob to skip. In the case of lsrc(1), any file matching the glob is not listed; in rcup(1) it is not symlinked; and in rcdn(1) it is not removed. The file glob can be preceded by the name of a dotfiles directory (separated from the file glob by a colon) to increase the specificity. Useful for: rcdn -e rcrc rcup -d work-dotfiles -e bashrc rcup -d ~/.dotfiles -d wife-dotfiles -d sys-dotfiles -e wife-dotfiles:tigrc
Diffstat (limited to 'bin/rcdn')
-rwxr-xr-xbin/rcdn7
1 files changed, 6 insertions, 1 deletions
diff --git a/bin/rcdn b/bin/rcdn
index 8695c63..66e064f 100755
--- a/bin/rcdn
+++ b/bin/rcdn
@@ -9,9 +9,11 @@ handle_command_line() {
local version=0
local dotfiles_dirs=
local files=
+ local excludes=
- while getopts Vqvt:d: opt; do
+ while getopts Vqve:t:d: opt; do
case "$opt" in
+ e) excludes="$excludes $OPTARG";;
t) arg_tags="$arg_tags $OPTARG" ;;
v) verbosity=$(($verbosity + 1));;
q) verbosity=$(($verbosity - 1));;
@@ -33,6 +35,9 @@ handle_command_line() {
for dotfiles_dir in $dotfiles_dirs; do
LS_ARGS="$LS_ARGS -d $dotfiles_dir"
done
+ for exclude in $excludes; do
+ LS_ARGS="$LS_ARGS -e $exclude"
+ done
LS_ARGS="$LS_ARGS $files"
$DEBUG "LS_ARGS: $LS_ARGS"