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

say(){ printf '%-26s %s\n' "$1" "$2"; }
have(){ command -v "$1" >/dev/null 2>&1; }

say timestamp "$(date -u +%Y-%m-%dT%H:%M:%SZ)"
say host "$(hostname 2>/dev/null || echo unknown)"

for c in git node pnpm kubectl docker devcontainer gh helm; do
  if have "$c"; then
    case "$c" in
      node) v="$(node --version)" ;;
      pnpm) v="$(pnpm --version)" ;;
      git) v="$(git --version)" ;;
      kubectl) v="$(kubectl version --client 2>/dev/null | head -n1)" ;;
      docker) v="$(docker --version 2>/dev/null)" ;;
      devcontainer) v="$(devcontainer --version 2>/dev/null || true)" ;;
      gh) v="$(gh --version | head -n1)" ;;
      helm) v="$(helm version --short 2>/dev/null || true)" ;;
    esac
    say "$c" "${v:-available}"
  else
    say "$c" MISSING
  fi
done

if have kubectl; then
  printf '\n[Kubernetes context]\n'
  kubectl config current-context || true
  printf '\n[Nodes]\n'
  kubectl get nodes -o wide || true
  printf '\n[RuntimeClasses]\n'
  kubectl get runtimeclass 2>/dev/null || true
  printf '\n[ARC-related CRDs]\n'
  kubectl get crd 2>/dev/null | grep -Ei 'actions\.github|runner|autoscalingrunner' || true
  printf '\n[ARC-related resources]\n'
  kubectl get pods -A 2>/dev/null | grep -Ei 'actions-runner|gha-runner|arc|runner-scale' || true
fi

cat <<'EOF'

This script is discovery only. It does not make DBOS, Workspace/WIP, gVisor,
ARC, Fabro, ACP, or trusted-publication gates green. Record those through the
failure/recovery E2E proofs required by STEP-0-PREPARATION-DEPENDENCIES.md.
EOF