41 lines
1.6 KiB
Bash
Executable File
41 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$ROOT"
|
|
command -v java >/dev/null || { echo 'Java 21 wird benötigt.'; exit 1; }
|
|
command -v npm >/dev/null || { echo 'Node.js 22.12+ und npm werden benötigt.'; exit 1; }
|
|
mkdir -p work
|
|
if [[ ! -d frontend/node_modules ]]; then
|
|
(cd frontend && npm ci)
|
|
fi
|
|
for port in 8080 5173; do
|
|
if command -v lsof >/dev/null && lsof -nP -iTCP:"$port" -sTCP:LISTEN >/dev/null 2>&1; then
|
|
echo "Port $port ist bereits belegt. Bitte die dort laufende Anwendung zuerst beenden."
|
|
exit 1
|
|
fi
|
|
done
|
|
BACKEND_PID=''
|
|
FRONTEND_PID=''
|
|
cleanup() {
|
|
[[ -z "$FRONTEND_PID" ]] || kill "$FRONTEND_PID" 2>/dev/null || true
|
|
[[ -z "$BACKEND_PID" ]] || kill "$BACKEND_PID" 2>/dev/null || true
|
|
}
|
|
trap cleanup EXIT INT TERM
|
|
echo 'Backend wird gebaut …'
|
|
(cd backend && ./mvnw -q -DskipTests package)
|
|
python3 scripts/run-backend.py > work/backend.log 2>&1 &
|
|
BACKEND_PID=$!
|
|
echo 'Spring Boot startet. Protokoll: work/backend.log'
|
|
READY=false
|
|
for attempt in {1..120}; do
|
|
if curl --fail --silent http://127.0.0.1:8080/api/health >/dev/null 2>&1; then READY=true; break; fi
|
|
if ! kill -0 "$BACKEND_PID" 2>/dev/null; then cat work/backend.log; exit 1; fi
|
|
sleep 1
|
|
done
|
|
if [[ "$READY" != true ]]; then echo 'Backend-Start dauert zu lange. Siehe work/backend.log'; exit 1; fi
|
|
(cd frontend && exec node node_modules/vite/bin/vite.js --host 127.0.0.1 --port 5173 --strictPort) &
|
|
FRONTEND_PID=$!
|
|
echo 'VoTiAn NG: http://localhost:5173 — Beenden mit Strg+C'
|
|
echo 'Anmeldung mit einem vorhandenen VoTiAn-Zentralenbenutzer.'
|
|
while kill -0 "$BACKEND_PID" 2>/dev/null && kill -0 "$FRONTEND_PID" 2>/dev/null; do sleep 2; done
|