Files
NexusOS/bin/check.sh
T

44 lines
1.5 KiB
Bash

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