#!/bin/bash
# Aria Arsenal Restore (KAR-61) — stellt /root/.claude/ aus
# KADiCon/aria-arsenal wieder her.
#
# Erwarteter Workflow nach VPS-Crash / Maschinen-Wechsel:
#   1. gh auth login (Token aus Mac/Keychain als Quelle)
#   2. bash aria-arsenal-restore.sh
#   3. /root/aria/.env mit Tokens manuell wieder einfügen (Keychain / Bitwarden)
#   4. systemctl daemon-reload && systemctl restart aria-*
#
# Exit-Codes:
#   0  OK
#   2  pre-flight failed (arsenal dir already exists with non-arsenal content)
#   3  git clone or rsync error

set -euo pipefail

ARSENAL="${ARIA_ARSENAL:-/root/aria-arsenal}"
CLAUDE_DIR="${CLAUDE_DIR:-/root/.claude}"
REPO_URL="${ARIA_ARSENAL_REPO:-https://github.com/KADiCon/aria-arsenal.git}"
DRY_RUN="${DRY_RUN:-0}"

say() { printf '%s\n' "$*"; }
run() { if [ "$DRY_RUN" = "1" ]; then say "[dry-run] $*"; else eval "$@"; fi; }

# --- 1. clone or refresh arsenal -----------------------------------------
if [ -d "$ARSENAL/.git" ]; then
    say "==> arsenal exists at $ARSENAL, pulling latest"
    run "git -C '$ARSENAL' pull --rebase origin main"
else
    if [ -e "$ARSENAL" ]; then
        say "ABORT: $ARSENAL exists but is not a git repo. Move it aside first." >&2
        exit 2
    fi
    say "==> cloning $REPO_URL"
    run "git clone --depth 1 '$REPO_URL' '$ARSENAL'"
fi

# --- 2. restore skills/hooks/agents --------------------------------------
mkdir -p "$CLAUDE_DIR"
RSYNC_OPTS=(-a --backup --suffix='.pre-restore.bak')

for sub in skills hooks agents; do
    src="$ARSENAL/$sub"
    if [ -d "$src" ]; then
        say "==> restoring $sub/"
        run "mkdir -p '$CLAUDE_DIR/$sub'"
        run "rsync ${RSYNC_OPTS[*]} '$src/' '$CLAUDE_DIR/$sub/'"
    fi
done

# --- 3. restore single files ---------------------------------------------
if [ -f "$ARSENAL/statusline-command.sh" ]; then
    say "==> restoring statusline-command.sh"
    run "cp '$ARSENAL/statusline-command.sh' '$CLAUDE_DIR/statusline-command.sh'"
fi

# --- 4. restore settings.json + mcp.json (with REDACTED placeholders) ----
for f in settings.json mcp.json; do
    if [ -f "$ARSENAL/$f" ]; then
        target="$CLAUDE_DIR/$f"
        if [ -f "$target" ]; then
            say "==> $f exists, NOT overwriting (move aside first if you want to restore)"
        else
            say "==> restoring $f (NOTE: REDACTED placeholders may need manual Token-injection)"
            run "cp '$ARSENAL/$f' '$target'"
        fi
    fi
done

say ""
say "==> restore done. Next steps:"
say "    1. Check 'grep REDACTED $CLAUDE_DIR/settings.json $CLAUDE_DIR/mcp.json'"
say "    2. Re-inject any tokens from /root/aria/.env or Keychain"
say "    3. systemctl daemon-reload && systemctl restart aria-*"
