#!/usr/bin/env bash # Gera a pagina de cada jogo de PuzzleScript do proprio autor do motor (Stephen Lavelle / increpare; motor e demos MIT) a # partir do commit 57f9f6c de github.com/increpare/PuzzleScript: Kettle, Constellation Z, Octat e 2D Whale World # (src/demo/*.txt). A pagina e o standalone_inlined.txt do repositorio, o mesmo modelo que o botao Export do editor usa # (motor, parser, compilador e controles de toque inline), com o texto do jogo no lugar de __GAMEDAT__. Mudancas nossas, # todas em puzzlescript/make.py: # - o riffwave.js (RIFFWAVE.js de Pedro Ladaria, GPL-2.0-only; sintetiza o WAV dos efeitos) sai e entra # puzzlescript/riffwave.js, implementacao propria equivalente (MIT), para o bundle nao ficar sob a GPL; # - progresso e preferencias no localStorage com a chave ps-:... (o original usa document.URL); # - sai o link para o site do autor e o botao "hack" (que envia o codigo ao puzzlescript.net); # - CSP que bloqueia qualquer requisicao fora da pagina. # # src/FredGames.Bundler/Builds/build-puzzlescript-games.sh # # Saida: artifacts/build/puzzlescript-57f9f6c/.html (+ .txt, o texto original do jogo). Roda duas vezes com o mesmo resultado. set -euo pipefail COMMIT=57f9f6cba69f6aa52ed738d5aee1d709d0037648 SHA256=b7ac66e3610865573a44dd8625300d8a95c024dc39c0ef0a18fd61eeee72bbdd here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/puzzlescript-${COMMIT:0:7}" cache="$root/artifacts/build/cache" mkdir -p "$cache" "$out" tar_gz="$cache/puzzlescript-${COMMIT:0:7}.tar.gz" if [ ! -f "$tar_gz" ]; then curl -fsSL --retry 4 "https://github.com/increpare/PuzzleScript/archive/$COMMIT.tar.gz" -o "$tar_gz.partial" && mv "$tar_gz.partial" "$tar_gz" fi echo "$SHA256 $tar_gz" | shasum -a 256 -c - tree="$out/tree" rm -rf "$tree"; mkdir -p "$tree" tar -xzf "$tar_gz" -C "$tree" --strip-components 1 # slug arquivo fundo texto (as cores de background_color/text_color de cada jogo ja na paleta dele; o padrao do motor e black/lightblue) while read -r slug file bg fg; do python3 -I "$here/puzzlescript/make.py" "$tree/src/standalone_inlined.txt" "$tree/src/demo/$file.txt" "$slug" "$bg" "$fg" \ "$here/puzzlescript/riffwave.js" "$out/$slug.html" cp "$tree/src/demo/$file.txt" "$out/$slug.txt" done <<'LIST' kettle kettle black lightblue constellation-z constellationz black lightblue octat octat black lightblue 2d-whale-world whaleworld #FF5500 #000055 LIST cp "$tree/LICENSE" "$out/LICENSE" rm -rf "$tree" shasum -a 256 "$out"/*.html