#!/usr/bin/env bash # Monta o Super Overachiever 42000 Deluxe (Artur "suve" Iwicki, Ludum Dare 42; codigo AGPL-3.0, o resto CC BY-SA 4.0) a partir do # commit 9b4d555 de github.com/suve/LD42, repetindo o que o Makefile do autor faz, sem php, imagemagick nem pngcrush: # - src/*.js: o mesmo sed do Makefile (caminhos ../gfx/ e ../sfx/ viram relativos); # - gfx/*.png: o "convert -transparent '#209C00' -transparent '#FF678B'" vira Pillow (as duas cores viram transparentes), sem o pngcrush; # - map/*.png: Builds/super-overachiever/map-to-js.py, porte em Python do src/map-to-js.php; # - index.html, style.css e sfx/*.wav copiados. # As licencas (LICENCE-AGPL-v3.txt e LICENCE-CC-BY-SA-v4.txt) vao junto na pasta do jogo. Precisa do Python de artifacts/tools/venv (Pillow). # # src/FredGames.Bundler/Builds/build-super-overachiever.sh # # Saida: artifacts/build/super-overachiever-9b4d555/dist.tar.gz (pasta dist/); sai igual em dois builds seguidos. set -euo pipefail COMMIT=9b4d5550a803841a65b127e220d015e391f7672b SHA256=547961c7c37234df2fbce2501a448f5c90d49d1fbcb0b3497cad0a1c90937675 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/super-overachiever-${COMMIT:0:7}" cache="$root/artifacts/build/cache" py="$root/artifacts/tools/venv/bin/python" [ -x "$py" ] || { echo "Precisa do Python com Pillow em $py." >&2; exit 1; } mkdir -p "$cache" f="$cache/suve_LD42-${COMMIT:0:7}.tar.gz" [ -f "$f" ] || curl -fsSL --retry 4 "https://github.com/suve/LD42/archive/$COMMIT.tar.gz" -o "$f" echo "$SHA256 $f" | shasum -a 256 -c - >/dev/null rm -rf "$out"; mkdir -p "$out/src" tar -xzf "$f" -C "$out/src" --strip-components 1 s="$out/src"; d="$out/dist"; mkdir -p "$d/map" cp "$s/src/index.html" "$s/src/style.css" "$d/" for j in "$s"/src/*.js; do sed -e 's|"\.\./gfx/\([a-zA-Z0-9._+"\-]*\)");|"\1");|g' -e 's|"\.\./sfx/\([a-zA-Z0-9._\-]*\)"|"\1"|g' "$j" > "$d/$(basename "$j")" done cp "$s"/sfx/*.wav "$d/" cp "$s/LICENCE-AGPL-v3.txt" "$s/LICENCE-CC-BY-SA-v4.txt" "$d/" "$py" -I - "$s/gfx" "$d" <<'PY' import glob, os, sys from PIL import Image src, dst = sys.argv[1:3] for p in sorted(glob.glob(src + '/*.png')): im = Image.open(p).convert('RGBA') px = im.load() for y in range(im.height): for x in range(im.width): r, g, b, a = px[x, y] if (r, g, b) in ((0x20, 0x9C, 0x00), (0xFF, 0x67, 0x8B)): px[x, y] = (r, g, b, 0) im.save(os.path.join(dst, os.path.basename(p)), optimize=False) PY for m in "$s"/map/*.png; do "$py" -I "$here/super-overachiever/map-to-js.py" "$m" > "$d/map/$(basename "${m%.png}").js" done find "$d" -exec touch -t 202610300000 {} + ( 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 > dist.tar.gz && rm -rf files.txt src dist ) ls -l "$out/dist.tar.gz"; shasum -a 256 "$out/dist.tar.gz"