feat: add --yes support to teardown scripts

This commit is contained in:
S
2026-03-02 11:32:01 -05:00
parent 57ceae3bd5
commit 62c9e0f2bb
11 changed files with 315 additions and 71 deletions

View File

@@ -11,6 +11,39 @@ set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
source "${SCRIPT_DIR}/lib/common.sh"
# Parse arguments
AUTO_YES=false
for arg in "$@"; do
case "$arg" in
--yes|-y) AUTO_YES=true ;;
--help|-h)
cat <<EOF
Usage: $(basename "$0") [options]
Options:
--yes, -y Skip all confirmation prompts
--help, -h Show this help
EOF
exit 0
;;
*)
log_error "Unknown argument: $arg"
exit 1
;;
esac
done
confirm_action() {
local prompt="$1"
if [[ "$AUTO_YES" == "true" ]]; then
log_info "Auto-confirmed (--yes): ${prompt}"
return 0
fi
printf '%s' "$prompt"
read -r confirm
[[ "$confirm" =~ ^[Yy]$ ]]
}
load_env
require_vars UNRAID_IP UNRAID_SSH_USER UNRAID_GITEA_DATA_PATH
@@ -26,9 +59,7 @@ TEARDOWN_FAILED=false
# ---------------------------------------------------------------------------
# Check if docker-compose file exists (skip if already torn down)
if ssh_exec UNRAID "test -f '${DATA_PATH}/docker-compose.yml'" 2>/dev/null; then
printf 'This will stop Gitea on Unraid. Continue? [y/N] '
read -r confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
if confirm_action 'This will stop Gitea on Unraid. Continue? [y/N] '; then
# Try modern "docker compose" first, fall back to standalone
if ssh_exec UNRAID "cd '${DATA_PATH}' && docker compose down 2>/dev/null || docker-compose down"; then
log_success "Gitea container stopped and removed"
@@ -44,9 +75,7 @@ else
existing_container=$(ssh_exec UNRAID "docker ps -a --filter 'name=^/gitea$' --format '{{.ID}}'" 2>/dev/null || true)
if [[ -n "$existing_container" ]]; then
log_warn "docker-compose.yml not found, but gitea container still exists."
printf 'Force-remove gitea container directly? [y/N] '
read -r confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
if confirm_action 'Force-remove gitea container directly? [y/N] '; then
if ssh_exec UNRAID "docker rm -f gitea" >/dev/null 2>&1; then
log_success "Gitea container force-removed"
else
@@ -70,9 +99,7 @@ if [[ -n "$running_container" ]]; then
log_warn "Gitea container is still running — refusing to remove data directory."
log_warn "Stop the container first, then re-run teardown to remove data."
elif ssh_exec UNRAID "test -d '${DATA_PATH}'" 2>/dev/null; then
printf 'Remove ALL Gitea data at %s? This is IRREVERSIBLE. [y/N] ' "$DATA_PATH"
read -r confirm
if [[ "$confirm" =~ ^[Yy]$ ]]; then
if confirm_action "$(printf 'Remove ALL Gitea data at %s? This is IRREVERSIBLE. [y/N] ' "$DATA_PATH")"; then
if ssh_exec UNRAID "rm -rf '${DATA_PATH}'"; then
log_success "All Gitea data removed from Unraid"
else