optional backup when cleaning

This commit is contained in:
Natercio Moniz
2025-10-23 11:17:41 +01:00
parent 4d7c7b7c9e
commit 41321a8818

View File

@@ -2,25 +2,46 @@
set -euo pipefail
TAG=.bak-$(date +%Y%m%d)
SRC_DIRS=(
"$HOME/.local/share/nvim"
"$HOME/.local/state/nvim"
"$HOME/.cache/nvim"
)
# Show plan and confirm
printf "This will back up and clean your Neovim directories.\n"
printf "Backup suffix to be appended: %s\n\n" "$TAG"
# Ask if user wants to backup
printf "Do you want to backup before cleaning? [Y/n]: "
read -r BACKUP_CHOICE
case ${BACKUP_CHOICE:-} in
[nN]|[nN][oO])
BACKUP=false
;;
*)
BACKUP=true
TAG=.bak-$(date +%Y-%m-%d_%H-%M-%S)
;;
esac
printf "Plan:\n"
for SRC in "${SRC_DIRS[@]}"; do
# Show plan and confirm
printf "\n"
if [ "$BACKUP" = true ]; then
printf "This will back up and clean your Neovim directories.\n"
printf "Backup suffix to be appended: %s\n\n" "$TAG"
printf "Plan:\n"
for SRC in "${SRC_DIRS[@]}"; do
if [ -e "$SRC" ]; then
DEST="${SRC}${TAG}"
printf " %s -> %s\n" "$SRC" "$DEST"
printf " %s ➡️ %s\n" "$SRC" "$DEST"
fi
done
done
else
printf "This will remove your Neovim directories WITHOUT backup.\n\n"
printf "Plan:\n"
for SRC in "${SRC_DIRS[@]}"; do
if [ -e "$SRC" ]; then
printf " %s ❌\n" "$SRC"
fi
done
fi
printf "\n"
read -r -p "Are you sure you want to proceed? [y/N]: " CONFIRM
@@ -29,12 +50,15 @@ case ${CONFIRM:-} in
*) printf "Aborted!\n"; exit 0;;
esac
# Perform moves, skipping missing sources
# Perform action based on backup choice
for SRC in "${SRC_DIRS[@]}"; do
if [ -e "$SRC" ]; then
if [ "$BACKUP" = true ]; then
DEST="${SRC}${TAG}"
printf "Moving %s -> %s\n" "$SRC" "$DEST"
mv "$SRC" "$DEST"
else
rm -rf "$SRC"
fi
fi
done