#!/usr/bin/env bash
set -euo pipefail

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
source "$SCRIPT_DIR/lib/common.sh"

PROJECT_ENV=""
COMPONENT=""
BACKUP_FILE=""
APPROVAL_FILE=""
APPLY=0
while [ "$#" -gt 0 ]; do
  case "$1" in
    --project-env) PROJECT_ENV="$2"; shift 2 ;;
    --component) COMPONENT="$2"; shift 2 ;;
    --backup-file) BACKUP_FILE="$2"; shift 2 ;;
    --approval-file) APPROVAL_FILE="$2"; shift 2 ;;
    --apply) APPLY=1; shift ;;
    *) die "unknown argument: $1" ;;
  esac
done

load_env_file "$PROJECT_ENV"
assert_no_placeholders "$PROJECT_ENV"
require_file "$BACKUP_FILE"
python3 "$SCRIPT_DIR/../tools/validate_tar.py" "$BACKUP_FILE"

case "$COMPONENT" in
  store) TARGET_ROOT="$STORE_ROOT" ;;
  ai-api) TARGET_ROOT="$AI_API_ROOT" ;;
  ai-store) TARGET_ROOT="$AI_STORE_ROOT" ;;
  *) die "invalid component" ;;
esac
validate_project_root "$TARGET_ROOT"
log "PLAN restore component=$COMPONENT from backup=$BACKUP_FILE"

[ "$APPLY" -eq 1 ] || {
  log "SHADOW_ONLY: rollback not executed"
  exit 0
}

[ -n "$APPROVAL_FILE" ] || die "--approval-file is required with --apply"
require_apply_authorization "rollback-code-${COMPONENT}" "$APPROVAL_FILE" "$TARGET_HOST_REF"
RESTORE_ROOT="$(dirname "$TARGET_ROOT")"
tar -xzf "$BACKUP_FILE" -C "$RESTORE_ROOT"
log "ROLLBACK_RESTORE_COMPLETE: run syntax and HTTP checks before reopening traffic"

