#!/usr/bin/env bash set -euo pipefail SCRIPT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd) REPO_ROOT=$(cd "${SCRIPT_DIR}/.." && pwd) DEFAULT_SANDBOX="${REPO_ROOT}/../galaxyforge-sandbox" SANDBOX_PATH="${1:-$DEFAULT_SANDBOX}" if [[ "$SANDBOX_PATH" != /* ]]; then SANDBOX_PATH="${REPO_ROOT}/${SANDBOX_PATH}" fi SANDBOX_PATH=$(realpath -m "$SANDBOX_PATH") if [[ ! -d "$SANDBOX_PATH" ]]; then echo "Sandbox nicht gefunden. Erstelle Worktree..." "${SCRIPT_DIR}/worktree-init.sh" "$SANDBOX_PATH" fi "${SCRIPT_DIR}/worktree-sync.sh" "$SANDBOX_PATH" if [[ ! -f "$SANDBOX_PATH/.env" ]]; then cat <<'ENV' > "$SANDBOX_PATH/.env" APP_ENV=test DEV_MODE=1 DEV_USER_ID=change-me DB_HOST=127.0.0.1 DB_PORT=5432 DB_NAME=galaxyforge DB_TEST_NAME=galaxyforge_test DB_USER=change-me DB_PASS=your-strong-password # Nur Platzhalter. Vor Prod aendern. ENV echo "Lokale .env in der Sandbox erzeugt: $SANDBOX_PATH/.env" fi if [[ ! -f "$SANDBOX_PATH/docker-compose.yml" ]]; then echo "Fehler: docker-compose.yml fehlt in der Sandbox: $SANDBOX_PATH" >&2 exit 1 fi ( cd "$SANDBOX_PATH" docker compose up -d --build ) set -a source "$SANDBOX_PATH/.env" set +a DB_USER="${DB_USER:-change-me}" DB_NAME="${DB_NAME:-galaxyforge}" DB_TEST_NAME="${DB_TEST_NAME:-galaxyforge_test}" DB_PASS="${DB_PASS:-your-strong-password}" READY=0 for _ in {1..30}; do if (cd "$SANDBOX_PATH" && docker compose exec -T db pg_isready -U "$DB_USER" >/dev/null 2>&1); then READY=1 break fi sleep 1 done if [[ "$READY" != "1" ]]; then echo "Fehler: Postgres ist nicht erreichbar." >&2 exit 1 fi if [[ "$DB_TEST_NAME" != "$DB_NAME" ]]; then if ! (cd "$SANDBOX_PATH" && docker compose exec -T db env PGPASSWORD="$DB_PASS" psql -U "$DB_USER" -d postgres -tc "SELECT 1 FROM pg_database WHERE datname = '${DB_TEST_NAME}'" | grep -q 1); then (cd "$SANDBOX_PATH" && docker compose exec -T db env PGPASSWORD="$DB_PASS" psql -U "$DB_USER" -d postgres -c "CREATE DATABASE \"${DB_TEST_NAME}\"") fi fi if [[ ! -f "$SANDBOX_PATH/server/vendor/autoload.php" ]]; then if ! command -v composer >/dev/null 2>&1; then echo "Fehler: composer nicht gefunden. Bitte installieren und erneut versuchen." >&2 exit 1 fi (cd "$SANDBOX_PATH/server" && composer install) fi ( cd "$SANDBOX_PATH/server" php db/migrate.php php db/seed.php ) echo "Testumgebung laeuft. Starte PHP-Server (Stop mit CTRL+C)." echo "- http://localhost:8000/" echo "- http://localhost:8000/m" echo "- http://localhost:8000/api/health" ( cd "$SANDBOX_PATH" php -S localhost:8000 -t web/desktop/public )