#!/usr/bin/env bash # Monta o Space Invectors (jogo de tiro de Camelia Lavender, AGPL-3.0; JavaScript puro, CSS e SVG, sem build) a partir # do commit 7a79cd4 de codeberg.org/camelia/space-invectors. # # Mudancas no jogo (space-invectors/space-invectors-fredygames.patch): sai o botao "Source" da tela inicial (link para fora do # site), a arena (tamanho fixo de ~1300x850 px) encolhe com CSS zoom para caber na janela e uma CSP bloqueia qualquer conexao externa. # # src/FredGames.Bundler/Builds/build-space-invectors.sh # # Saida: artifacts/build/space-invectors-7a79cd4/space-invectors-7a79cd4-dist.tar.gz (dist/); sai igual em dois builds. set -euo pipefail COMMIT=7a79cd48747d2c3b0ab969bab852ca71abbe13aa SHA256=5c008c52ad07d8250c2d959a2758d44bf1686f973d13d4fad374c22fb85ff172 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/space-invectors-${COMMIT:0:7}" cache="$root/artifacts/build/cache" tgz="$cache/space-invectors-${COMMIT:0:7}.tar.gz" mkdir -p "$cache" if [ ! -f "$tgz" ]; then curl -fsSL --retry 4 "https://codeberg.org/camelia/space-invectors/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/tree" "$out/dist" tar -xzf "$tgz" -C "$out/tree" --strip-components 1 patch -s -p1 -d "$out/tree" < "$here/space-invectors/space-invectors-fredygames.patch" cp -R "$out/tree/index.html" "$out/tree/css" "$out/tree/lib" "$out/tree/svg" "$out/dist/" # dist/ vira um tar.gz deterministico (datas fixas, ordem fixa, sem dono). find "$out/dist" -exec touch -t 202604090000 {} + ( 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 > "space-invectors-${COMMIT:0:7}-dist.tar.gz" && rm files.txt ) rm -rf "$out/tree" ls -l "$out/space-invectors-${COMMIT:0:7}-dist.tar.gz" shasum -a 256 "$out/space-invectors-${COMMIT:0:7}-dist.tar.gz"