#!/usr/bin/env bash
# gpu-down — destroy the active vast.ai instance + roll opencode back to Host A.
# Idempotent.

set -euo pipefail
STATE_FILE=/var/lib/specker/vast-current.json
OPENCODE_CONFIG=/home/opencode/.config/opencode/opencode.json
OPENCODE_BACKUP=${OPENCODE_CONFIG}.host-a-backup
PATH="/root/.local/bin:$PATH"

if [[ -f $STATE_FILE ]]; then
  INSTANCE_ID=$(jq -r '.instance_id' "$STATE_FILE")
  echo "[*] destroying vast.ai instance $INSTANCE_ID ..."
  if yes | vastai destroy instance "$INSTANCE_ID" 2>&1; then
    echo "[+] destroy ok"
  else
    echo "[!] destroy returned non-zero (instance may already be gone)"
  fi
  rm -f "$STATE_FILE"
else
  echo "[=] no active state file — nothing to destroy on vast.ai side"
fi

if [[ -f $OPENCODE_BACKUP ]]; then
  cp "$OPENCODE_BACKUP" "$OPENCODE_CONFIG"
  chown opencode:opencode "$OPENCODE_CONFIG"
  chmod 0640 "$OPENCODE_CONFIG"
  systemctl restart opencode-server.service
  echo "[+] opencode rolled back to Host A (from $OPENCODE_BACKUP)"
else
  echo "[!] no Host A backup found ($OPENCODE_BACKUP) — opencode.json untouched"
fi

echo "==================================================================="
echo "  gpu-down complete"
echo "==================================================================="
