50 lines
1.1 KiB
Bash
Executable File
50 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
REPO_DIR="/home/jan/Documents/RFP/Infinity_Vis_Rust"
|
|
APP_URL="http://127.0.0.1:9001/"
|
|
STATE_URL="http://127.0.0.1:9001/api/v1/state"
|
|
RUNTIME_STATE_PATH="data/runtime_state.json"
|
|
|
|
open_browser() {
|
|
xdg-open "$APP_URL" >/dev/null 2>&1 &
|
|
}
|
|
|
|
if curl -fsS "$STATE_URL" >/dev/null 2>&1; then
|
|
echo "Infinity Vis laeuft bereits auf $APP_URL"
|
|
open_browser
|
|
exit 0
|
|
fi
|
|
|
|
cd "$REPO_DIR"
|
|
. "$HOME/.cargo/env"
|
|
|
|
echo "Starte infinity_host_api auf $APP_URL"
|
|
cargo run -p infinity_host_api -- \
|
|
--config config/project.example.toml \
|
|
--bind 127.0.0.1:9001 \
|
|
--runtime-state "$RUNTIME_STATE_PATH" &
|
|
SERVER_PID=$!
|
|
|
|
cleanup() {
|
|
if kill -0 "$SERVER_PID" >/dev/null 2>&1; then
|
|
kill "$SERVER_PID" >/dev/null 2>&1 || true
|
|
wait "$SERVER_PID" >/dev/null 2>&1 || true
|
|
fi
|
|
}
|
|
|
|
trap cleanup EXIT INT TERM
|
|
|
|
for _attempt in $(seq 1 60); do
|
|
if curl -fsS "$STATE_URL" >/dev/null 2>&1; then
|
|
echo "Infinity Vis ist bereit."
|
|
open_browser
|
|
wait "$SERVER_PID"
|
|
exit $?
|
|
fi
|
|
sleep 0.5
|
|
done
|
|
|
|
echo "Der lokale API-Server wurde nicht rechtzeitig erreichbar."
|
|
wait "$SERVER_PID"
|