aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rwxr-xr-xinstall.sh22
1 files changed, 5 insertions, 17 deletions
diff --git a/install.sh b/install.sh
index 2803971..d8da4e1 100755
--- a/install.sh
+++ b/install.sh
@@ -10,25 +10,13 @@ if [ -r .installed ]; then
export DOTFILES_INSTALLED
fi
-printf "%s: Removing bad links\n" "$0"
-{
- git log --name-only --no-renames --diff-filter=D --format=format: "$DOTFILES_INSTALLED" HEAD
- git diff --name-only --no-renames --diff-filter=D HEAD
- cat .untracked 2>/dev/null
-} | sort -u | while read -r f; do
- if [ -L "$TARGET/${f#*/}" ] && [ ! -e "$TARGET/${f#*/}" ]; then
- rm -v "$TARGET/${f#*/}"
- fi
-done
-
-git ls-files --exclude-standard --others >.untracked
-if [ ! -s .untracked ]; then
- rm -f .untracked
-fi
-
printf "%s: Stowing packages\n" "$0"
# shellcheck disable=SC2086
-stow "$@" ${1:-*}/
+stow -R "$@" ${1:-*}/ 2>&1 | tac | awk '
+ /\(reverts previous action\)$/ { reverted[$2] = 1; next }
+ /^LINK:/ { print $0 }
+ /^UNLINK:/ { if (!reverted[$2]) { print $0 } }
+' | tac
printf "%s: Installing packages\n" "$0"
for f in ${1:-*}/install.sh; do