#!/usr/bin/env bash # Compila o Les Aiguilles Blanches (simulador de maquina de neve em Phaser 3 + TypeScript, de Antoine Cellerier e colaboradores; MIT) a partir # do commit ad48859 de github.com/antoinecellerier/les-aiguilles-blanches (2026-02-25): Vite 7 + phaser 3.90 + phaser3-rex-plugins (versoes do # package-lock.json do autor, npm ci --ignore-scripts) e o Node 24.21.0 de artifacts/tools. Todos os graficos (Phaser Graphics) e todo o # audio (Web Audio) sao gerados em codigo: nao ha arquivo de arte nem de som, so os icones do PWA. # # Mudancas (les-aiguilles-blanches/les-aiguilles-blanches-fredygames.patch): sem os links para o GitHub do autor (rodape, botao de feedback, # tela de erro de carga) e sem a checagem de nova versao; sem PWA (service worker), sem source maps (18 MB) e sem o grafico de bundle no # vite.config.ts; sem og:image/og:url do site do autor; idioma inicial em ingles quando o do navegador nao esta entre os 14 do jogo (o # original cai no frances); a marca de maquina "PistenBully" sai dos textos (falas de queda em 14 idiomas e creditos) e a frase dos creditos # que cita outro jogo tambem; CSP que bloqueia qualquer conexao fora do site. # # src/FredGames.Bundler/Builds/build-les-aiguilles-blanches.sh # # Saida: artifacts/build/les-aiguilles-blanches-ad48859/les-aiguilles-blanches-ad48859-dist.tar.gz (dist/); tem que sair igual em dois builds. set -euo pipefail SLUG=les-aiguilles-blanches COMMIT=ad48859bee7fcaf179921288d417a6d07a9b3a93 SHA256=a818b9a54d0468e3966f803cac3ee417ddeaba16a32e1eed665a69c308e54227 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/$SLUG-${COMMIT:0:7}" cache="$root/artifacts/build/cache" export PATH="$root/artifacts/tools/node-v24.21.0/bin:$PATH" mkdir -p "$cache" fetch() { # url dest sha256 if [ ! -f "$2" ]; then curl -fsSL --retry 4 "$1" -o "$2.partial" && mv "$2.partial" "$2"; fi echo "$3 $2" | shasum -a 256 -c - } fetch "https://github.com/antoinecellerier/les-aiguilles-blanches/archive/$COMMIT.tar.gz" "$cache/$SLUG-${COMMIT:0:7}.tar.gz" "$SHA256" rm -rf "$out" mkdir -p "$out/tree" tar -xzf "$cache/$SLUG-${COMMIT:0:7}.tar.gz" -C "$out/tree" --strip-components 1 # Fonte publicado (sem alteracoes), em tar deterministico. ( cd "$out/tree" && find . -type f | sed 's|^\./||' | LC_ALL=C sort > "$out/files.txt" ) ( cd "$out/tree" && COPYFILE_DISABLE=1 tar --format=ustar --uid 0 --gid 0 --uname root --gname root -n \ -cf - -T "$out/files.txt" ) | gzip -n -9 > "$out/$SLUG-${COMMIT:0:7}.tar.gz" rm "$out/files.txt" cd "$out/tree" patch -s -p1 < "$here/$SLUG/$SLUG-fredygames.patch" npm ci --ignore-scripts --no-audit --no-fund --cache "$cache/npm-$SLUG" >/dev/null npx vite build --base ./ >/dev/null rm -f dist/manifest.json dist/og-image.png dist/stats.html # nenhum endereco externo do autor pode ter ficado no que sobe if grep -rlE 'github\.com/antoinecellerier|cellerier\.net' dist | grep -q .; then echo "Sobrou endereco do autor em dist/:" >&2 grep -rlE 'github\.com/antoinecellerier|cellerier\.net' dist >&2 exit 1 fi if grep -rl 'PistenBully' dist | grep -q .; then echo "Sobrou o nome PistenBully em dist/" >&2 exit 1 fi mkdir -p "$out/dist" cp -R dist/. "$out/dist/" cp LICENSE "$out/LICENSE" # licencas e versoes das dependencias que entram no JavaScript (phaser e o plugin rex) for pkg in phaser phaser3-rex-plugins; do echo "$pkg $(node -p "require('./node_modules/$pkg/package.json').version") ($(node -p "require('./node_modules/$pkg/package.json').license"))" >> "$out/deps.txt" for f in node_modules/$pkg/LICENSE*; do [ -f "$f" ] && cp "$f" "$out/$pkg-$(basename "$f")"; done done find "$out/dist" -exec touch -t 202602251457 {} + ( 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 > "$SLUG-${COMMIT:0:7}-dist.tar.gz" && rm files.txt ) cd "$root" rm -rf "$out/tree" ls -l "$out/$SLUG-${COMMIT:0:7}-dist.tar.gz" shasum -a 256 "$out/$SLUG-${COMMIT:0:7}-dist.tar.gz" "$out/$SLUG-${COMMIT:0:7}.tar.gz"