From 41321a8818cd1c4428f089acf68063cc6434cf19 Mon Sep 17 00:00:00 2001 From: Natercio Moniz Date: Thu, 23 Oct 2025 11:17:41 +0100 Subject: [PATCH] optional backup when cleaning --- clean.sh | 56 ++++++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 40 insertions(+), 16 deletions(-) diff --git a/clean.sh b/clean.sh index 40b8310..d095089 100755 --- a/clean.sh +++ b/clean.sh @@ -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 - if [ -e "$SRC" ]; then - DEST="${SRC}${TAG}" - printf " %s -> %s\n" "$SRC" "$DEST" - fi -done +# 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" + fi + 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 - DEST="${SRC}${TAG}" - printf "Moving %s -> %s\n" "$SRC" "$DEST" - mv "$SRC" "$DEST" + if [ "$BACKUP" = true ]; then + DEST="${SRC}${TAG}" + mv "$SRC" "$DEST" + else + rm -rf "$SRC" + fi fi done