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

BASE="${HOME}/.hermes/fleet"
KEY="${BASE}/keys/hermesops_ed25519"
CASES="${BASE}/cases"
mkdir -p "$CASES"

ssh_common=(-i "$KEY" -o IdentitiesOnly=yes -o StrictHostKeyChecking=accept-new -o ConnectTimeout=10)

usage() {
  cat <<'EOF'
usage:
  hermes-fleet.sh status
  hermes-fleet.sh ping <host>
  hermes-fleet.sh diagnose-linux <host>
  hermes-fleet.sh diagnose-macos <host>
  hermes-fleet.sh diagnose-windows <host>
EOF
  exit 1
}

cmd="${1:-}"
host="${2:-}"

case "$cmd" in
  status)
    tailscale status
    ;;
  ping)
    [[ -n "$host" ]] || usage
    tailscale ping "$host" || true
    ssh "${ssh_common[@]}" "hermesops@$host" 'hostname; date -u; tailscale status' || true
    ;;
  diagnose-linux|diagnose-macos)
    [[ -n "$host" ]] || usage
    mkdir -p "$CASES/$host"
    remote_path=$(ssh "${ssh_common[@]}" "hermesops@$host" 'sudo /opt/hermes-remote/diagnose.sh' | tail -n1)
    scp "${ssh_common[@]}" "hermesops@$host:$remote_path" "$CASES/$host/"
    echo "$CASES/$host/$(basename "$remote_path")"
    ;;
  diagnose-windows)
    [[ -n "$host" ]] || usage
    mkdir -p "$CASES/$host"
    remote_path=$(ssh "${ssh_common[@]}" "hermesops@$host" 'powershell -ExecutionPolicy Bypass -File C:\ProgramData\HermesRemote\diagnose.ps1' | tail -n1 | tr -d '')
    scp "${ssh_common[@]}" "hermesops@$host:$remote_path" "$CASES/$host/" || {
      echo "Windows scp failed. Try retrieving manually from: $remote_path" >&2
      exit 2
    }
    echo "$CASES/$host/$(basename "$remote_path")"
    ;;
  *)
    usage
    ;;
esac
