#!/usr/bin/env bash # Gera o seismic-afterburner.love do Seismic Afterburner (rominou66, AGPL-3.0) a partir do commit dda3128 do # repositorio, com um patch nosso (publicado junto do fonte): # seismic-afterburner/no-quit.patch a tecla Esc deixa de fechar o jogo (no navegador so sobraria um canvas preto). # O .love e um zip deterministico (ordem alfabetica, data fixa, deflate) com main.lua, # conf.lua, src/, assets/, LICENSE e credits; ficam de fora o que o jogo nao carrega: assets/map (arquivos do # Tiled; o mapa vem de src/level_data.lua), tres musicas nao usadas (Mars, Venus, Intro Jingle), os .ase # (projetos do editor), capturas de tela, README e a pasta makelove-build (binarios). # # src/FredGames.Bundler/Builds/build-seismic-afterburner.sh # # Saida: artifacts/build/seismic-afterburner-dda3128/seismic-afterburner.love set -euo pipefail COMMIT=dda312853cac59675de02ef1a44d0d57b15926b2 SHA256=048762de3b191396f39cb5c64d1d9799225f5c9926f1939fb1a2e518163c4551 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/seismic-afterburner-dda3128" cache="$root/artifacts/build/cache" mkdir -p "$cache" tarball="$cache/seismic-afterburner-dda3128.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/rominou66/Love-Jam-2022-Seismic-Afterburner/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 patch -d "$out/tree" -p1 < "$here/seismic-afterburner/no-quit.patch" python3 -I - "$out/tree" "$out/seismic-afterburner.love" <<'PY' import os, sys, zipfile src, dest = sys.argv[1:] keep_top = ('main.lua', 'conf.lua', 'LICENSE', 'credits') drop = ('assets/map/', 'assets/music/Mars.wav', 'assets/music/Venus.wav', 'assets/music/Intro Jingle.wav') names = [] for base, dirs, files in os.walk(src): for f in files: rel = os.path.relpath(os.path.join(base, f), src).replace(os.sep, '/') top = rel.split('/')[0] if '/' not in rel and rel not in keep_top: continue if top not in ('assets', 'src') and '/' in rel: continue if rel.endswith('.ase') or any(rel.startswith(d) for d in drop): continue names.append(rel) with zipfile.ZipFile(dest, 'w', zipfile.ZIP_DEFLATED, compresslevel=9) as z: for rel in sorted(names): info = zipfile.ZipInfo(rel, (1980, 1, 1, 0, 0, 0)) info.compress_type = zipfile.ZIP_DEFLATED info.external_attr = 0o644 << 16 info.create_system = 3 with open(os.path.join(src, rel), 'rb') as fh: z.writestr(info, fh.read(), compresslevel=9) PY shasum -a 256 "$out/seismic-afterburner.love"