From 2c3eb9b4609103995821e1b015e041c27d14d603 Mon Sep 17 00:00:00 2001 From: Jonas H Date: Fri, 27 Feb 2026 23:31:21 +0100 Subject: [PATCH] add dot-remove --- dot-remove | 45 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100755 dot-remove diff --git a/dot-remove b/dot-remove new file mode 100755 index 0000000..8cee180 --- /dev/null +++ b/dot-remove @@ -0,0 +1,45 @@ +#!/usr/bin/env bash +# dot-remove: Unstow a package and move its files back to their original locations. +# +# Usage: dot-remove +# +# Example: dot-remove oh-my-zsh + +set -euo pipefail + +DOTFILES_DIR="$(cd "$(dirname "$0")" && pwd)" + +if [[ $# -ne 1 ]]; then + echo "Usage: dot-remove " + exit 1 +fi + +PACKAGE="$1" +PACKAGE_DIR="$DOTFILES_DIR/$PACKAGE" + +if [[ ! -d "$PACKAGE_DIR" ]]; then + echo "Error: package '$PACKAGE' not found in $DOTFILES_DIR" + exit 1 +fi + +# Remove symlinks first +stow --dir="$DOTFILES_DIR" --target="$HOME" --delete "$PACKAGE" +echo "Unstowed: $PACKAGE" + +# Move files back to their original locations +while IFS= read -r -d '' FILE; do + REL="${FILE#$PACKAGE_DIR/}" + DEST="$HOME/$REL" + mkdir -p "$(dirname "$DEST")" + mv "$FILE" "$DEST" + echo "Restored: $DEST" +done < <(find "$PACKAGE_DIR" -type f -print0) + +# Remove now-empty package directory +rm -rf "$PACKAGE_DIR" +echo "Removed: $PACKAGE_DIR" +echo "" +echo "Next steps:" +echo " cd ~/dotfiles" +echo " git rm -r $PACKAGE" +echo " git commit -m 'remove $PACKAGE'"