#!/usr/bin/env bash # pruefen.sh — das Prüftor (seit 24.09.2026, ersetzt die tote CI-Ampel). # # Läuft am PC vor dem Push und auf der Box in deploy.sh vor dem Umschalten. Rot = kein Deploy. # Prüft: Shell-Syntax, Python-Syntax, Lint (wo ruff installiert ist), dass alle Dienste sich # importieren lassen, und die Tests. set -uo pipefail cd "$(dirname "$0")/.." WURZEL="$(pwd)" PY="${MC_PRUEF_PYTHON:-}" if [ -z "$PY" ]; then for k in backend/.venv/bin/python backend/.venv/Scripts/python.exe; do [ -x "$k" ] && PY="$WURZEL/$k" && break done fi [ -n "$PY" ] || { echo "✗ Kein Python im backend/.venv gefunden."; exit 1; } fehler=0 schritt() { echo "── $1"; } schritt "Syntax der Shell-Skripte" for f in deploy/*.sh deploy/jobs/*.sh; do bash -n "$f" || { echo " ✗ $f"; fehler=1; } done schritt "Python-Syntax" git ls-files '*.py' | grep -v '^frontend/' | xargs "$PY" -m py_compile || fehler=1 schritt "Lint (ruff)" if command -v ruff >/dev/null 2>&1; then ruff check . || fehler=1 else echo " ruff ist hier nicht installiert — übersprungen (am PC läuft er)." fi schritt "Dienste lassen sich laden" MODELS_PROBE="${MC_PRUEF_MODELS_DIR:-${TMPDIR:-/tmp}/mc2-pruefen}" mkdir -p "$MODELS_PROBE" ( cd backend && MC_MODELS_DIR="$MODELS_PROBE" "$PY" -c "import app, gateway_app, steward, radar_lauf" ) || fehler=1 schritt "Tests" "$PY" -m pytest backend/tests -q -p no:cacheprovider || fehler=1 if [ "$fehler" = 0 ]; then echo "✅ Prüftor grün" else echo "✗ Prüftor rot" exit 1 fi