#!/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"