#!/bin/bash
# Hydrogen Desktop Un-Bootstrap Script
# Resets the container to virgin state for testing.
# HD downloads this from the wiki and runs it via:
#   docker exec -u adom hydrogen-workspace bash /tmp/hd-unbootstrap.sh

set -euo pipefail

step() {
    local status="$1" cmd="$2" msg="$3"
    echo "STEP|${status}|${cmd}|${msg}"
}

# ── 1. Kill relay server ──
if pgrep -f "adom-desktop serve" >/dev/null 2>&1; then
    step run "pkill -f 'adom-desktop serve'" "stopping relay..."
    pkill -f "adom-desktop serve" 2>/dev/null || true
    sleep 1
    step done "pkill -f 'adom-desktop serve'" "relay stopped"
else
    step skip "pkill -f 'adom-desktop serve'" "relay not running"
fi

# ── 2. Uninstall adom-vscode extension from code-server ──
if /usr/lib/code-server/bin/code-server --list-extensions 2>/dev/null | grep -q "adom.adom-vscode"; then
    step run "code-server --uninstall-extension adom.adom-vscode" "removing VS Code extension..."
    /usr/lib/code-server/bin/code-server --uninstall-extension adom.adom-vscode 2>/dev/null || true
    step done "code-server --uninstall-extension adom.adom-vscode" "extension removed"
else
    step skip "code-server --uninstall-extension adom.adom-vscode" "not installed"
fi

# ── 3. Remove adom-vscode binary ──
if [ -f /usr/local/bin/adom-vscode ]; then
    step run "rm /usr/local/bin/adom-vscode" "removing binary..."
    sudo rm -f /usr/local/bin/adom-vscode 2>/dev/null || rm -f /usr/local/bin/adom-vscode
    step done "rm /usr/local/bin/adom-vscode" "binary removed"
else
    step skip "rm /usr/local/bin/adom-vscode" "not installed"
fi

# ── 4. Remove adom-vscode skill + completions ──
if [ -d "$HOME/.claude/skills/adom-vscode" ]; then
    step run "rm -rf ~/.claude/skills/adom-vscode" "removing skill..."
    rm -rf "$HOME/.claude/skills/adom-vscode"
    rm -f "$HOME/.local/share/bash-completion/completions/adom-vscode" 2>/dev/null || true
    step done "rm -rf ~/.claude/skills/adom-vscode" "skill removed"
else
    step skip "rm -rf ~/.claude/skills/adom-vscode" "not installed"
fi

# ── 5. Remove Claude Code CLI ──
if command -v claude &>/dev/null; then
    step run "rm ~/.local/bin/claude" "removing Claude CLI..."
    rm -f "$HOME/.local/bin/claude" 2>/dev/null || true
    step done "rm ~/.local/bin/claude" "CLI removed"
else
    step skip "rm ~/.local/bin/claude" "not installed"
fi

# ── 6. Uninstall Claude Code extension from code-server ──
if /usr/lib/code-server/bin/code-server --list-extensions 2>/dev/null | grep -q "anthropic.claude-code"; then
    step run "code-server --uninstall-extension anthropic.claude-code" "removing Claude Code extension..."
    /usr/lib/code-server/bin/code-server --uninstall-extension anthropic.claude-code 2>/dev/null || true
    step done "code-server --uninstall-extension anthropic.claude-code" "extension removed"
else
    step skip "code-server --uninstall-extension anthropic.claude-code" "not installed"
fi

# ── 7. Reset VS Code settings to defaults ──
SETTINGS_PATH="$HOME/.local/share/code-server/User/settings.json"
if [ -f "$SETTINGS_PATH" ]; then
    step run "rm $SETTINGS_PATH" "resetting VS Code settings..."
    rm -f "$SETTINGS_PATH"
    step done "rm $SETTINGS_PATH" "settings reset"
else
    step skip "rm $SETTINGS_PATH" "no settings file"
fi

# ── 8. Remove gallia skills ──
if [ -d "$HOME/gallia" ]; then
    step run "rm -rf ~/gallia ~/.claude/skills/adom" "removing gallia..."
    rm -rf "$HOME/gallia"
    rm -rf "$HOME/.claude/skills/adom" 2>/dev/null || true
    step done "rm -rf ~/gallia ~/.claude/skills/adom" "gallia removed"
else
    step skip "rm -rf ~/gallia" "not installed"
fi

# ── 9. Remove workbench.html patches ──
WORKBENCH="/usr/lib/code-server/lib/vscode/out/vs/code/browser/workbench/workbench.html"
if grep -q "__hdLinkPropagation" "$WORKBENCH" 2>/dev/null; then
    step run "unpatch workbench.html" "removing link propagation patch..."
    sudo sed -i '/__hdLinkPropagation/,/<\/script>/d' "$WORKBENCH" 2>/dev/null || true
    step done "unpatch workbench.html" "patch removed"
else
    step skip "unpatch workbench.html" "no patch found"
fi

# ── 10. Remove bootstrap script itself ──
rm -f /tmp/hd-bootstrap.sh /tmp/hd-unbootstrap.sh /tmp/adom-vscode-0.1.0.vsix 2>/dev/null || true

echo "STEP|done|unbootstrap|complete"
