#!/usr/bin/env bash # Compila o Doppelkopf (jogo de cartas alemao contra 3 computadores, MIT, Hermann Vocke / hamvocke; Vue 3 + Vite 7) # a partir do commit c140135 de github.com/hamvocke/doppelkopf, com o "npm ci" do package-lock.json do autor # e "vite build --base=./", com o Node 24.21.0 de artifacts/tools. # # Mudancas no projeto, todas feitas aqui (cada uma falha se o texto esperado nao existir): # - index.html: sai o script do Plausible (analytics de terceiros); # - main.ts: sai o Sentry (relatorio de erros enviado a ingest.sentry.io); # - router: historico por hash (createWebHashHistory), porque o jogo roda numa pasta/iframe e nao na raiz de um dominio; # - Home.vue: sai o botao "Como jogar", que abria a Wikipedia (e os enderecos da Wikipedia em locales/*.json); nos textos de # apresentacao (locales/en.json e de.json) o nome do site do autor, doppelkopf.party, vira "This is" / "Dies ist"; # - os 11 icones PNG das reservas e da escolha de naipe (estilo Flaticon, sem credito no repositorio) saem e entram # desenhos proprios em SVG (Builds/doppelkopf/*.svg, licenca MIT deste projeto), com os mesmos nomes; # - public/: ficam so o favicon.ico (o PWA manifest, as redirecoes e os icones de plataforma saem). # A fonte Fira Sans Condensed Black Italic (SIL OFL 1.1) vem junto, sem mudanca, e o texto da licenca vai no LICENSE.txt. # # src/FredGames.Bundler/Builds/build-doppelkopf.sh # # Saida: artifacts/build/doppelkopf-c140135/doppelkopf-c140135-site.tar.gz (pasta site/); dois builds seguidos dao os # mesmos bytes. set -euo pipefail COMMIT=c140135bfb245c05f1e85bcf028547f3d83461e9 SHA256=4bb48cbd7e2093e14c1bed10994be16c1a8d1197137940d51f6a0ced2b77e51d NODE=24.21.0 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" slug=doppelkopf out="$root/artifacts/build/$slug-${COMMIT:0:7}" cache="$root/artifacts/build/cache" nodebin="$root/artifacts/tools/node-v$NODE/bin" [ -x "$nodebin/node" ] && [ "$("$nodebin/node" -v)" = "v$NODE" ] || { echo "Precisa do Node $NODE em $nodebin." >&2; exit 1; } export PATH="$nodebin:/usr/bin:/bin" mkdir -p "$cache" tarball="$cache/$slug-${COMMIT:0:7}.tar.gz" [ -f "$tarball" ] || curl -fsSL --retry 4 "https://github.com/hamvocke/doppelkopf/archive/$COMMIT.tar.gz" -o "$tarball" echo "$SHA256 $tarball" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" tar -xzf "$tarball" -C "$out/tree" --strip-components 1 cd "$out/tree" python3 -I - <<'PY' import re def edit(path, fn): s = open(path, encoding="utf-8").read() n = fn(s) assert n != s, path open(path, "w", encoding="utf-8", newline="").write(n) def index(s): a = s.index("