Files
Habegger_loader_game/run.sh
T

45 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# Startet das Habegger Loader Game.
#
# Beim ersten Start wird eine lokale virtuelle Umgebung (.venv) angelegt und
# requirements.txt installiert. Ändert sich requirements.txt, wird neu
# installiert. Alle Argumente werden an main.py weitergegeben, z. B.:
#
# ./run.sh --windowed
# ./run.sh --name "Anna" --seed 42
#
# Getestet auf macOS (arm64) und Linux.
set -euo pipefail
cd "$(dirname "$0")"
VENV=".venv"
PYTHON="${PYTHON:-python3}"
STAMP="$VENV/.requirements.sha256"
if [ ! -x "$VENV/bin/python" ]; then
echo "→ Lege virtuelle Umgebung an ($("$PYTHON" --version 2>&1))"
"$PYTHON" -m venv "$VENV"
fi
if ! "$VENV/bin/python" -c 'import sys; raise SystemExit(0 if sys.version_info >= (3, 9) else 1)'; then
echo "✗ Python 3.9 oder neuer wird benötigt (gefunden: $("$VENV/bin/python" -V 2>&1))"
echo " Tipp: neueres Python installieren (z.B. brew install python@3.12) und"
echo " die Umgebung neu anlegen: rm -rf .venv"
exit 1
fi
if command -v shasum >/dev/null 2>&1; then
REQ_HASH="$(shasum -a 256 requirements.txt | cut -d' ' -f1)"
else
REQ_HASH="$(sha256sum requirements.txt | cut -d' ' -f1)"
fi
if [ ! -f "$STAMP" ] || [ "$(cat "$STAMP")" != "$REQ_HASH" ]; then
echo "→ Installiere Abhängigkeiten aus requirements.txt"
"$VENV/bin/python" -m pip install --quiet --upgrade pip
"$VENV/bin/python" -m pip install --quiet -r requirements.txt
echo "$REQ_HASH" >"$STAMP"
fi
exec "$VENV/bin/python" main.py "$@"