From 88303cf1cde4af9152a370f80febe39e91eb1138 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hannes=20K=C3=B6rber?= Date: Sat, 26 Apr 2014 16:47:14 +0200 Subject: [PATCH] Add dry run options and copying a skeleton. --- scripts/setup.bash | 34 +++++++++++++++++++++++++++++++--- 1 file changed, 31 insertions(+), 3 deletions(-) diff --git a/scripts/setup.bash b/scripts/setup.bash index a8f6d1d..1dbfdbd 100755 --- a/scripts/setup.bash +++ b/scripts/setup.bash @@ -1,10 +1,14 @@ #!/usr/bin/env bash +# Possible options: +# --dry-run -n : only show what would be done without doing anything # config directory config_dir="$HOME/dotfiles/" mapping_file="$config_dir/MAPPING" +skel_dir="$config_dir/skel/" + # backup directory, files that would otherwise be overwritten go there backup_dir="$HOME/.dotfiles.bak/" @@ -14,6 +18,22 @@ symlink_folders='git i3 vim zsh conky x mpd ncmpcpp' MAPPING_SEPARATOR='::' +dryrun="" + +while [[ $# -gt 0 ]] ; do + case "$1" in + -n|--dry-run) + echo "dry run" + dryrun="yes" + ;; + *) + echo "invalid parameters" + exit 1 + ;; + esac + shift +done + path_combine() { echo "$(dirname "$1")/$(basename "$1")/$(basename "$2")" @@ -49,14 +69,22 @@ for folder in $symlink_folders ; do continue elif [[ -e "$destination" ]]; then backup_destination="$(path_combine "$backup_dir" "$(basename "$destination")")" - [[ -d "$backup_dir" ]] || mkdir -p "$backup_dir" + if ! [[ -d "$backup_dir" ]] ; then + echo "mkdir -p \"$backup_dir\"" + [[ $dryrun ]] || mkdir -p "$backup_dir" + fi echo "mv \"$destination\" -> \"$backup_destination\"" - mv "$destination" "$backup_destination" + [[ $dryrun ]] || mv "$destination" "$backup_destination" fi [[ -e "$destination" ]] && [[ "$(readlink "$destination")" == "$file" ]] && continue echo "ln -sf \"$file\" -> \"$destination\"" - ln -sf "$file" "$destination" + [[ $dryrun ]] || ln -sf "$file" "$destination" done done +# copy everything from the skel directory into $HOME, but do not overwrite anything +# the /. at the end of source is some cp magic that copies the content of a directory +# instead of the directory inself +echo "cp -a --no-clobber \"$skel_dir/.\" \"$HOME\"" +[[ $dryrun ]] || cp -a --no-clobber "$skel_dir/." "$HOME"