#!/usr/bin/env bash # Monta o Pulse (jogo de tiro no escuro com radar, de Jed Whitten, Ludum Dare 59; MIT; Phaser 3.80.1, MIT; fontes Orbitron e # Share Tech Mono, OFL-1.1) a partir do commit 9d69f0a de github.com/jswhitten/ld59, sem etapa de build do autor. # Mudancas em pulse/pulse-fredygames.patch: so o index.html. O Phaser 3.80.1 deixa de vir do jsDelivr e vai junto, pelo # mesmo arquivo do pacote do npm (sha256 do .tgz conferido), e as fontes do Google Fonts vao junto, em fonts/, do # google/fonts num commit fixo (sha256 conferido), com uma CSP que barra qualquer requisicao fora do site. # # src/FredGames.Bundler/Builds/build-pulse.sh # # Saida: artifacts/build/pulse-9d69f0a/{pulse-9d69f0a-dist.tar.gz,licenses.txt}; o tar.gz (pasta dist/) sai igual em dois builds # seguidos. set -euo pipefail COMMIT=9d69f0ab5ebdd3cff1a93da7359121b4047fcede SHA256=02dd358453ce9946366490a141cbdd78f328ed80ce3dfc465cae200cd7855b4d PHASER=3.80.1 PHASER_SHA256=7900112897ec72041e6aa0c1bc2f55a7d76aee97ef9b27b1e1e6cebdf3afe858 FONTS_COMMIT=9862abc066c9b83bf84c3e8ed1fc2d8d48f9bbf0 GF=https://raw.githubusercontent.com/google/fonts/$FONTS_COMMIT here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/pulse-${COMMIT:0:7}" cache="$root/artifacts/build/cache" fetch() { # url arquivo sha256 if [ ! -f "$cache/$2" ]; then curl -fsSL --retry 4 "$1" -o "$cache/$2.partial" && mv "$cache/$2.partial" "$cache/$2" fi echo "$3 $cache/$2" | shasum -a 256 -c - >/dev/null } mkdir -p "$cache" fetch "https://github.com/jswhitten/ld59/archive/$COMMIT.tar.gz" "pulse-${COMMIT:0:7}.tar.gz" "$SHA256" fetch "https://registry.npmjs.org/phaser/-/phaser-$PHASER.tgz" "phaser-$PHASER.tgz" "$PHASER_SHA256" fetch "$GF/ofl/sharetechmono/ShareTechMono-Regular.ttf" "ShareTechMono-Regular-${FONTS_COMMIT:0:7}.ttf" 9ceab1f87414829af259c0f537573ae03ef7dd3147c0b27a36a1a0beb6732677 fetch "$GF/ofl/sharetechmono/OFL.txt" "ShareTechMono-OFL-${FONTS_COMMIT:0:7}.txt" 9d96f445b6e9c701428811d0177f894874f8d6f07ecc30d568c506542368f3ff fetch "$GF/ofl/orbitron/Orbitron%5Bwght%5D.ttf" "Orbitron-wght-${FONTS_COMMIT:0:7}.ttf" f42db2dd16e642258e35782916eceb1dcdbea06fb958d77ad71dc5963587e8fd fetch "$GF/ofl/orbitron/OFL.txt" "Orbitron-OFL-${FONTS_COMMIT:0:7}.txt" ab609b0e110d622435ff337cdf233288556e011bbf9bd0550be98846c0630819 rm -rf "$out" mkdir -p "$out/tree" "$out/dist/fonts" "$out/phaser" tar -xzf "$cache/pulse-${COMMIT:0:7}.tar.gz" -C "$out/tree" --strip-components 1 patch -s -p1 -d "$out/tree" < "$here/pulse/pulse-fredygames.patch" tar -xzf "$cache/phaser-$PHASER.tgz" -C "$out/phaser" --strip-components 1 package/dist/phaser.min.js package/LICENSE.md cp -R "$out/tree/index.html" "$out/tree/favicon.svg" "$out/tree/game.js" "$out/tree/scenes" "$out/tree/objects" \ "$out/tree/systems" "$out/tree/utils" "$out/dist/" cp "$out/phaser/dist/phaser.min.js" "$out/dist/phaser.min.js" cp "$cache/ShareTechMono-Regular-${FONTS_COMMIT:0:7}.ttf" "$out/dist/fonts/ShareTechMono-Regular.ttf" cp "$cache/Orbitron-wght-${FONTS_COMMIT:0:7}.ttf" "$out/dist/fonts/Orbitron-wght.ttf" { echo "== Pulse (LICENSE do repositorio, MIT)" cat "$out/tree/LICENSE" echo echo "== Phaser $PHASER (LICENSE.md do pacote npm, MIT)" cat "$out/phaser/LICENSE.md" echo echo "== Share Tech Mono (google/fonts $FONTS_COMMIT, ofl/sharetechmono/OFL.txt)" cat "$cache/ShareTechMono-OFL-${FONTS_COMMIT:0:7}.txt" echo echo "== Orbitron (google/fonts $FONTS_COMMIT, ofl/orbitron/OFL.txt)" cat "$cache/Orbitron-OFL-${FONTS_COMMIT:0:7}.txt" } > "$out/licenses.txt" find "$out/dist" -exec touch -t 202511010000 {} + ( 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 > "pulse-${COMMIT:0:7}-dist.tar.gz" && rm files.txt ) rm -rf "$out/tree" "$out/phaser" ls -l "$out/pulse-${COMMIT:0:7}-dist.tar.gz" shasum -a 256 "$out/pulse-${COMMIT:0:7}-dist.tar.gz" "$out/licenses.txt"