#!/usr/bin/env bash # Gera o trispace.love do TriSpace (G. T. Rogers, Ludum Dare 42, MIT; github.com/gtrogers/ld42) a partir do commit # 355faae, com um patch nosso (trispace/love11.patch, publicado junto do fonte): o jogo foi escrito para o LOVE 0.10 e # o player e o LOVE 11.5 (cores de 0 a 1, tipo obrigatorio em newSource, Image:getData e love.filesystem.isFile # removidos), e o autor avisa que a correcao para o 11 ainda nao foi feita. O patch acrescenta um pequeno adaptador no # main.lua, troca a leitura dos pixels das fases em levelLoader.lua e tira o contador de FPS de depuracao do canto # da tela. O .love e um zip deterministico (ordem alfabetica, data fixa, deflate) com a arvore do repositorio sem # .gitignore e TODO.md (notas do autor). # # src/FredGames.Bundler/Builds/build-trispace.sh # # Saida: artifacts/build/trispace-355faae/trispace.love set -euo pipefail COMMIT=355faae9f6f30f4d4a70c231baeb8fc05699abed SHA256=402c637f6441e7416f4006ccb26e9f1a0d5e492cdf5381bbeddc5cb8e3f5fa0d here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/trispace-${COMMIT:0:7}" cache="$root/artifacts/build/cache" mkdir -p "$cache" tarball="$cache/trispace-${COMMIT:0:7}.tar.gz" [ -f "$tarball" ] || curl -fsSL "https://github.com/gtrogers/ld42/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/trispace/love11.patch" python3 -I - "$out/tree" "$out/trispace.love" <<'PY' import os, sys, zipfile src, dest = sys.argv[1:] 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, '/') if rel in ('.gitignore', 'TODO.md'): 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/trispace.love"