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