#!/usr/bin/env bash
# One command that answers "is this shippable" - Python tests + frontend lint.
#
# ponytail: this IS the CI. The remote is self-hosted Gitea with no act_runner,
# so a .github/workflows file would never execute. Run this before tagging a
# release; wire it to a runner the day one exists.
set -uo pipefail
cd "$(dirname "$0")/.."

fail=0

if [ ! -x Promethean/bin/python ]; then
    echo "!! no Promethean venv - run ./install.sh first" >&2
    exit 1
fi

echo "== pytest =="
# Explicit dirs: a bare `pytest` would walk Promethean/ and node_modules too.
Promethean/bin/python -m pytest -q tests management || fail=1

echo "== eslint =="
if [ -d interface/web/node_modules ]; then
    (cd interface/web && npm run lint) || fail=1
else
    echo "-- skipped: interface/web/node_modules missing (npm install)"
fi

echo "== powershell parse =="
# The Windows installer has died at parse twice. Cheap to catch here if pwsh
# happens to be installed on the Linux box; the ASCII guard in tests/ is the
# portable half of the same check.
if command -v pwsh >/dev/null; then
    for f in install-windows.ps1 launch_nexus.ps1; do
        pwsh -NoProfile -Command "\$e=\$null
            [System.Management.Automation.Language.Parser]::ParseFile('$f',[ref]\$null,[ref]\$e) | Out-Null
            if (\$e) { \$e | ForEach-Object { Write-Host '$f:' \$_.Message }; exit 1 }" || fail=1
    done
else
    echo "-- skipped: pwsh not installed"
fi

[ "$fail" -eq 0 ] && echo "OK" || echo "FAILED"
exit "$fail"
