#!/usr/bin/env bash
# KateRTX · JS SPV compile · pure bash · project tree only
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
SPVS="$ROOT/spvs"
fail=0
ok=0
check_one() {
  local f="$1" base name t o c p q
  base=$(basename "$f"); name=${base%.js}
  echo "── compile $base"
  [[ -f "$f" ]] || { echo FAIL missing; fail=$((fail+1)); return; }
  t=$(cat "$f")
  grep -q BGRTX_SPV_PLUGS <<<"$t" || { echo "FAIL $base registry"; fail=$((fail+1)); return; }
  grep -qE 'function[[:space:]]+mount|mount[[:space:]]*[:=]' <<<"$t" || { echo "FAIL $base mount"; fail=$((fail+1)); return; }
  o=$(grep -o '{' <<<"$t"|wc -l|tr -d ' '); c=$(grep -o '}' <<<"$t"|wc -l|tr -d ' ')
  [[ "$o" == "$c" ]] || { echo "FAIL $base braces"; fail=$((fail+1)); return; }
  p=$(grep -o '(' <<<"$t"|wc -l|tr -d ' '); q=$(grep -o ')' <<<"$t"|wc -l|tr -d ' ')
  [[ "$p" == "$q" ]] || { echo "FAIL $base parens"; fail=$((fail+1)); return; }
  [[ -f "$SPVS/${name}.dom.html" ]] && echo "  dom ok" || echo "  WARN no dom"
  echo "OK $base"; ok=$((ok+1))
}
t="${1:-all}"
echo "=== KateRTX JS SPV compile ==="
if [[ "$t" == all ]]; then
  for f in "$SPVS"/*.js; do check_one "$f"; done
elif [[ -f "$t" ]]; then check_one "$t"
elif [[ -f "$SPVS/${t}.js" ]]; then check_one "$SPVS/${t}.js"
else echo "usage: compile [file|id|all]"; exit 2; fi
echo "── ok=$ok fail=$fail"
[[ "$fail" -eq 0 ]]
