#!/usr/bin/env bash # Prepara LaserGuide (galeria do Sprig, hackclub/sprig, MIT) para o fredygames.com. Ver sprig-web/common.sh. # src/FredGames.Bundler/Builds/build-laserguide.sh # precisa de node, npm, python3, patch e rede na primeira vez # O jogo usa eval("map`...`") para montar o mapa de cada fase e a CSP do host (script-src 'self') nao deixa. O patch # laserguide/laserguide-no-eval.patch troca so essa linha por map([texto]) (o mesmo resultado, sem eval); game.js sai do arquivo # ja corrigido e o LaserGuide.js original (sem patch) e o patch vao juntos nas sources. # Saida: artifacts/build/sprig-laserguide/{index.html,game.js,LaserGuide.js,laserguide-no-eval.patch} (mais o engine em artifacts/build/sprig-engine-/). set -euo pipefail here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" SLUG=laserguide GAME_FILE=LaserGuide.js TITLE="LaserGuide" . "$here/sprig-web/common.sh" sprig_build >/dev/null out="$sprig_root/artifacts/build/sprig-$SLUG" patch -s -o "$out/LaserGuide.patched.js" "$out/$GAME_FILE" "$here/laserguide/laserguide-no-eval.patch" ! grep -q 'eval(' "$out/LaserGuide.patched.js" || { echo "eval ainda presente" >&2; exit 1; } node "$here/sprig-web/wrap-game.mjs" "$out/LaserGuide.patched.js" "$out/game.js" rm "$out/LaserGuide.patched.js" cp "$here/laserguide/laserguide-no-eval.patch" "$out/" eng="$sprig_root/artifacts/build/sprig-engine-${SPRIG_COMMIT:0:7}" echo "# Cole em bundle.yaml (web.files e sources):" echo "index.html $(shasum -a 256 < "$out/index.html" | cut -c1-64)" echo "game.js $(shasum -a 256 < "$out/game.js" | cut -c1-64)" echo "$GAME_FILE $(shasum -a 256 < "$out/$GAME_FILE" | cut -c1-64)" echo "laserguide-no-eval.patch $(shasum -a 256 < "$out/laserguide-no-eval.patch" | cut -c1-64)" (cd "$eng" && find . -name '*.js' | sed 's|^\./||' | sort | while read -r f; do echo "engine/$f $(shasum -a 256 < "$f" | cut -c1-64)"; done) echo "engine-src.tar.gz $(shasum -a 256 < "$sprig_root/artifacts/build/sprig-engine-${SPRIG_COMMIT:0:7}-src.tar.gz" | cut -c1-64)"