#!/usr/bin/env bash set -euo pipefail # ============================================================================= # phase1_teardown.sh — Tear down Gitea on Unraid # Destructive: stops container, optionally removes all data. # Prompts for confirmation before each destructive action. # Safe to run against an already-torn-down instance (no errors). # ============================================================================= SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" source "${SCRIPT_DIR}/lib/common.sh" load_env require_vars UNRAID_IP UNRAID_SSH_USER UNRAID_GITEA_DATA_PATH DATA_PATH="$UNRAID_GITEA_DATA_PATH" log_warn "=== Phase 1 Teardown: Gitea on Unraid ===" # --------------------------------------------------------------------------- # Step 1: Stop and remove the Gitea container # --------------------------------------------------------------------------- # 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 # Try modern "docker compose" first, fall back to standalone ssh_exec UNRAID "cd '${DATA_PATH}' && docker compose down 2>/dev/null || docker-compose down" || true log_success "Gitea container stopped and removed" else log_info "Skipped container shutdown" fi else log_info "No docker-compose.yml found — container already removed" fi # --------------------------------------------------------------------------- # Step 2: Optionally remove all Gitea data # This is irreversible — removes repos, database, config, everything. # --------------------------------------------------------------------------- if 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 ssh_exec UNRAID "rm -rf '${DATA_PATH}'" log_success "All Gitea data removed from Unraid" else log_info "Data preserved at ${DATA_PATH}" fi else log_info "Data directory already removed" fi # --------------------------------------------------------------------------- # Step 3: Clear the auto-populated API token from .env # The token is useless after teardown — clear it so phase1 generates a new one. # --------------------------------------------------------------------------- if [[ -n "${GITEA_ADMIN_TOKEN:-}" ]]; then save_env_var "GITEA_ADMIN_TOKEN" "" log_success "GITEA_ADMIN_TOKEN cleared from .env" fi log_success "Phase 1 teardown complete"