#!/usr/bin/env bash # Monta o Factors Game (puzzle de matematica de Michael P. Nitowski, MIT; JavaScript puro, sem audio nem fontes) a partir do # commit aba7558 de github.com/mnito/factors-game, com o factors-game-full.min.js que o autor traz no repositorio # (o src/ e o mesmo codigo sem minificar, e o MIT nao exige o fonte, mas ele vai junto como "sources"). # # Mudancas no jogo (factors-game/factors-game-fredygames.patch): sem as meta tags og:/twitter: (apontam para # o GitHub Pages do autor), sem os links para o GitHub e o Twitter do autor (viram texto) e com uma CSP que # bloqueia qualquer conexao externa. # # src/FredGames.Bundler/Builds/build-factors-game.sh # # Saida: artifacts/build/factors-game-aba7558/{factors-game-aba7558-dist.tar.gz}; o # tar.gz sai igual em dois builds seguidos. set -euo pipefail COMMIT=aba7558f6aab203a2cc991ac4ae6da2439ef9aaa SHA256=817e4327574c762cb018ea7228c3b0956820c569539ed3bc58d0209ded1b6e46 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/factors-game-${COMMIT:0:7}" cache="$root/artifacts/build/cache" mkdir -p "$cache" if [ ! -f "$cache/factors-game-${COMMIT:0:7}.tar.gz" ]; then curl -fsSL --retry 4 "https://github.com/mnito/factors-game/archive/$COMMIT.tar.gz" -o "$cache/factors-game-${COMMIT:0:7}.tar.gz.partial" \ && mv "$cache/factors-game-${COMMIT:0:7}.tar.gz.partial" "$cache/factors-game-${COMMIT:0:7}.tar.gz" fi echo "$SHA256 $cache/factors-game-${COMMIT:0:7}.tar.gz" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" "$out/dist" tar -xzf "$cache/factors-game-${COMMIT:0:7}.tar.gz" -C "$out/tree" --strip-components 1 patch -s -p1 -d "$out/tree" < "$here/factors-game/factors-game-fredygames.patch" cp "$out/tree/index.html" "$out/tree/favicon.png" "$out/tree/factors-game-full.min.js" "$out/dist/" # dist/ vira um tar.gz deterministico (datas fixas, ordem fixa, sem dono). find "$out/dist" -exec touch -t 202109260000 {} + ( cd "$out" && find dist -type f | LC_ALL=C sort > files.txt \ && COPYFILE_DISABLE=1 tar --format=ustar --uid 0 --gid 0 --uname root --gname root -n -cf - -T files.txt \ | gzip -n -9 > "factors-game-${COMMIT:0:7}-dist.tar.gz" && rm files.txt ) rm -rf "$out/tree" ls -l "$out/factors-game-${COMMIT:0:7}-dist.tar.gz" shasum -a 256 "$out/factors-game-${COMMIT:0:7}-dist.tar.gz"