restore: replace dual flags with single --do-pre-backup=true/false parameter

This commit is contained in:
2025-08-24 08:54:45 +00:00
parent b4a6b8d4d3
commit 044645a1ca

View File

@@ -5,17 +5,12 @@ set -euo pipefail
MONGO_SERVICE="utility-bills-tracker_mongo" MONGO_SERVICE="utility-bills-tracker_mongo"
# Parse command line options # Parse command line options
SKIP_PRE_BACKUP=false DO_PRE_BACKUP=""
NO_PRE_BACKUP=false
while [[ $# -gt 0 ]]; do while [[ $# -gt 0 ]]; do
case $1 in case $1 in
--skip-pre-backup) --do-pre-backup=*)
SKIP_PRE_BACKUP=true DO_PRE_BACKUP="${1#*=}"
shift
;;
--no-pre-backup)
NO_PRE_BACKUP=true
shift shift
;; ;;
*) *)
@@ -27,16 +22,15 @@ done
# Usage: ./restore.sh [options] <timestamp> # Usage: ./restore.sh [options] <timestamp>
# Example: ./restore.sh 2025-08-24-14-30 # Example: ./restore.sh 2025-08-24-14-30
# Options: --skip-pre-backup (skip interactive prompt, create backup) # Options: --do-pre-backup=true/false (skip interactive prompt)
# --no-pre-backup (skip interactive prompt, no backup)
if [ -z "${TIMESTAMP:-}" ]; then if [ -z "${TIMESTAMP:-}" ]; then
echo "Usage: $0 [options] <timestamp>" echo "Usage: $0 [options] <timestamp>"
echo "Example: $0 2025-08-24-14-30" echo "Example: $0 2025-08-24-14-30"
echo "" echo ""
echo "Options:" echo "Options:"
echo " --skip-pre-backup Skip interactive prompt, create pre-restore backup" echo " --do-pre-backup=true Skip interactive prompt, create pre-restore backup"
echo " --no-pre-backup Skip interactive prompt, no pre-restore backup" echo " --do-pre-backup=false Skip interactive prompt, no pre-restore backup"
echo "" echo ""
echo "Available backups:" echo "Available backups:"
ls -1t backups/mongo-volume-backup-*.tar.gz 2>/dev/null | sed 's/.*mongo-volume-backup-\(.*\)\.tar\.gz/ \1/' || echo " No backups found" ls -1t backups/mongo-volume-backup-*.tar.gz 2>/dev/null | sed 's/.*mongo-volume-backup-\(.*\)\.tar\.gz/ \1/' || echo " No backups found"
@@ -69,15 +63,20 @@ docker service scale "$MONGO_SERVICE"=0
# Handle pre-restore backup # Handle pre-restore backup
CREATE_PRE_BACKUP=true CREATE_PRE_BACKUP=true
if [ "$NO_PRE_BACKUP" = true ]; then if [ "$DO_PRE_BACKUP" = "false" ]; then
CREATE_PRE_BACKUP=false CREATE_PRE_BACKUP=false
elif [ "$SKIP_PRE_BACKUP" = false ]; then elif [ "$DO_PRE_BACKUP" = "true" ]; then
CREATE_PRE_BACKUP=true
elif [ -z "$DO_PRE_BACKUP" ]; then
# Ask user interactively # Ask user interactively
read -p "Create pre-restore safety backup? (Y/n): " -n 1 -r read -p "Create pre-restore safety backup? (Y/n): " -n 1 -r
echo echo
if [[ $REPLY =~ ^[Nn]$ ]]; then if [[ $REPLY =~ ^[Nn]$ ]]; then
CREATE_PRE_BACKUP=false CREATE_PRE_BACKUP=false
fi fi
else
echo "Error: --do-pre-backup must be 'true' or 'false'"
exit 1
fi fi
# Create pre-restore backup if requested # Create pre-restore backup if requested