#!/usr/bin/env bash # Prepara o Cruel Mines (um campo minado "cruel mas justo", MIT, Pawel Marczewski / pwmarcz; o repositorio chama o jogo de # "Kaboom") a partir do commit 2c5cc17 de github.com/pwmarcz/kaboom. Nao precisa de build (HTML, CSS e JavaScript puros, com # Bootstrap 4.3.1, MiniSat compilado para JS e long-press-event, todos MIT e com o aviso de copyright no proprio arquivo). # # Mudancas, todas no index.html e feitas aqui (cada uma falha se o texto esperado nao existir): # - titulo e cabecalho: "Kaboom" (titulo de um jogo da Activision) vira "Cruel Mines"; # - os quatro niveis perdem os nomes de um jogo comercial e viram Easy, Medium, Hard e Expert, com o tamanho a vista; # - saem a secao "See also" (YouTube, Tatham, minesweepr, GitHub e blog do autor) e o rodape com o link do autor: nada da # pagina leva para fora do site. O credito do autor fica no texto da pagina do jogo e no LICENSE. # Nenhuma requisicao sai do site (o jogo nao usa fonte, imagem de terceiros nem rede). # # src/FredGames.Bundler/Builds/build-cruel-mines.sh # # Saida: artifacts/build/cruel-mines-2c5cc17/cruel-mines-2c5cc17-site.tar.gz (pasta site/); dois builds seguidos dao os mesmos bytes. set -euo pipefail COMMIT=2c5cc170ae7a2ac6faf4da348e13b50c5c3dddb4 SHA256=ec81892f414e728e18741e7116966c98aa9237f18aedf5248c24bb46d9b91cc6 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" slug=cruel-mines out="$root/artifacts/build/$slug-${COMMIT:0:7}" cache="$root/artifacts/build/cache" mkdir -p "$cache" tarball="$cache/kaboom-${COMMIT:0:7}.tar.gz" [ -f "$tarball" ] || curl -fsSL --retry 4 "https://github.com/pwmarcz/kaboom/archive/$COMMIT.tar.gz" -o "$tarball" echo "$SHA256 $tarball" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/site" tar -xzf "$tarball" -C "$out/site" --strip-components 1 cd "$out/site" rm -rf .eslintrc.json .gitignore python3 -I - <<'PY' 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): def rep(old, new): nonlocal s assert s.count(old) == 1, old s = s.replace(old, new) rep("