#!/bin/bash # Sourced, not run: it leaves the PHP server in the caller's background and exports # GAME_MAKER_BASE_URL, which every tool reads. # # The build wires its assets absolutely under /game-maker/dist/, so the checkout has to be # served under that path segment – hence the symlink into /srv rather than `-t .`. export GAME_MAKER_BASE_URL=http://127.0.0.1:8080/game-maker/ game_maker_serve() { local root root=$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd) mkdir -p "$root/data/projects" "$root/data/textures" node "$root/tools/ci/project-shells.mjs" # A server from an earlier step of the same job is fine to keep. if curl -sf "${GAME_MAKER_BASE_URL}api/index.php?r=projects" >/dev/null 2>&1; then echo "server already up at $GAME_MAKER_BASE_URL" return 0 fi mkdir -p /srv && ln -sfn "$root" /srv/game-maker # Without workers the single-threaded dev server stalls: the editor fetches project and # textures in parallel. PHP_CLI_SERVER_WORKERS=8 php -S 0.0.0.0:8080 -t /srv >/tmp/php-server.log 2>&1 & for _ in $(seq 60); do curl -sf "${GAME_MAKER_BASE_URL}api/index.php?r=projects" >/dev/null 2>&1 && break sleep 0.5 done if ! curl -sf "${GAME_MAKER_BASE_URL}api/index.php?r=projects" >/dev/null 2>&1; then echo "the server never came up" >&2 tail -20 /tmp/php-server.log >&2 return 1 fi echo "serving $root at $GAME_MAKER_BASE_URL" }