#!/usr/bin/env bash # Monta o Ghost Car Challenge (corrida contra "pilotos fantasma" em WebGL de Dusan Halicky, GPL-3.0; HTML/JS puro, sem etapa # de build) a partir do commit ca0a399 de github.com/dvhx/game-ghost-car-challenge. # # Mudancas (ghost-car-challenge/ghost-car-challenge-fredygames.patch): uma CSP que bloqueia qualquer requisicao fora da # propria pagina e o texto de "Credits" do menu, sem enderecos e com o credito do skybox da Union Square (Humus, CC BY 3.0). # Seis pilotos fantasma da tabela tinham nome igual ao de pessoas conhecidas e levam nomes inventados (rename-drivers.py). # README, FUNDING e .github ficam de fora do que e servido (o tarball do fonte, no bundle.yaml, continua o do autor). # # src/FredGames.Bundler/Builds/build-ghost-car-challenge.sh # # Saida: artifacts/build/ghost-car-challenge-ca0a399/ghost-car-challenge-ca0a399-dist.tar.gz (dist/index.html + pastas); # tem que sair igual em dois builds. set -euo pipefail COMMIT=ca0a399a0e7175e3774da190859dd63bc12fe257 SHA256=334224d0b6540f1a79725d3fe1f859ad0c5b92aec27d5e7ed37e24c8ab127ce9 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/ghost-car-challenge-${COMMIT:0:7}" cache="$root/artifacts/build/cache" tgz="$cache/ghost-car-challenge-${COMMIT:0:7}.tar.gz" mkdir -p "$cache" if [ ! -f "$tgz" ]; then curl -fsSL --retry 4 "https://github.com/dvhx/game-ghost-car-challenge/archive/$COMMIT.tar.gz" -o "$tgz.partial" && mv "$tgz.partial" "$tgz" fi echo "$SHA256 $tgz" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/dist" tar -xzf "$tgz" -C "$out/dist" --strip-components 1 cd "$out/dist" patch -s -p1 < "$here/ghost-car-challenge/ghost-car-challenge-fredygames.patch" rm -rf README.md LICENSE .github .gitignore python3 -I "$here/ghost-car-challenge/rename-drivers.py" . rm -f track/leaderboard.ngjs # nada de endereco externo no que o jogo executa if grep -rEq 'https?://' index.html js/*.js css/*.css; then echo "Sobrou endereco externo:" >&2; grep -rnE 'https?://' index.html js/*.js css/*.css | cut -c1-160 >&2 fi # dist/ vira um tar.gz deterministico (datas fixas, ordem fixa, sem dono). cd "$out" find dist -exec touch -t 202611060000 {} + 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 > "ghost-car-challenge-${COMMIT:0:7}-dist.tar.gz" rm files.txt ls -l "ghost-car-challenge-${COMMIT:0:7}-dist.tar.gz" shasum -a 256 "ghost-car-challenge-${COMMIT:0:7}-dist.tar.gz"