#!/usr/bin/env bash # Gera o arkaway.pyxapp do Arkaway (son-link, GPL-3.0) a partir do commit dbffac5 do repositorio, com um patch # nosso (publicado junto do fonte): # arkaway/save-scores-in-browser.patch as melhores pontuacoes iam para ./scores.json (que nao persiste na # web); agora vao para /saves/arkaway/, a pasta que o play/pyxel.html # guarda no IndexedDB, quando ela existe (no desktop nada muda); nessa # pasta a tecla Q (sair) tambem sai, porque na web so congela a pagina. # O .pyxapp leva so o que o jogo usa (main.py, arkaway/, assets.pyxres, maps.json), com o marcador de script # inicial; zip deterministico (Builds/pyxapp.py): dois builds seguidos dao o mesmo sha256. # # src/FredGames.Bundler/Builds/build-arkaway.sh # # Saida: artifacts/build/arkaway-dbffac5/arkaway.pyxapp set -euo pipefail COMMIT=dbffac58fa8e5cf77d276c2f5835577a642deab6 SHA256=ee99375bbc012d061da59ff0f633a75601fb72270a259dc15b70c1b95fc8ae3b here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/arkaway-dbffac5" cache="$root/artifacts/build/cache" mkdir -p "$cache" tarball="$cache/arkaway-dbffac5.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/son-link/arkaway/archive/$COMMIT.tar.gz" -o "$tarball" echo "$SHA256 $tarball" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" "$out/app/arkaway" tar -xzf "$tarball" -C "$out/tree" --strip-components 1 patch -d "$out/tree" -p1 < "$here/arkaway/save-scores-in-browser.patch" cp -R "$out/tree/main.py" "$out/tree/arkaway" "$out/tree/assets.pyxres" "$out/tree/maps.json" "$out/app/arkaway/" python3 -I "$here/pyxapp.py" "$out/app/arkaway" main.py "$out/arkaway.pyxapp" shasum -a 256 "$out/arkaway.pyxapp"