#!/usr/bin/env bash # Monta o Power Down (Christoph Schansky, Gamedev.js Jam 2024, MIT) a partir do fonte do commit 25f7599, SEM a # musica de fundo: o jogo diz que ela e "heavily inspired" por uma cancao de outro artista, entao os dados dela # (src/song.js) nao entram na build nem nos arquivos publicados. Ficam os efeitos sonoros (sound_hit.js e # sound_laser.js, gerados no SoundBox pelo autor) e o tocador do SoundBox (zlib) que os executa. # # Sem npm/gulp: o gulpfile do autor so concatena os .js na ordem abaixo e minifica; aqui so se concatena # (sem minificar). Mudancas no fonte em power-down-13kb/power-down-13kb-nomusic.patch (sem o botao da musica, sem # o loadMusic da musica, sem os textos que a citam e sem a tag de song.js no index.html). # # src/FredGames.Bundler/Builds/build-power-down-13kb.sh # # Saida: artifacts/build/power-down-13kb-25f7599/{dist/,power-down-13kb-25f7599-dist.tar.gz}; o tar.gz (pasta # dist/) tem que sair igual em dois builds seguidos. set -euo pipefail COMMIT=25f75995ba786f094839243a4e8e6f7cdb34e68c SHA256=3595089476115b89157365379973b2c6cee6aa7a2471a79f86c5bb96c171b34d here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/power-down-13kb-${COMMIT:0:7}" cache="$root/artifacts/build/cache" tarball="powerdown13k-${COMMIT:0:7}.tar.gz" mkdir -p "$cache" [ -f "$cache/$tarball" ] || curl -fsSL --retry 4 "https://github.com/DerBenniBanni/robopower_gamedevjs2024/archive/$COMMIT.tar.gz" -o "$cache/$tarball" echo "$SHA256 $cache/$tarball" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" "$out/dist" tar -xzf "$cache/$tarball" -C "$out/tree" --strip-components 1 patch -s -p1 -d "$out/tree" < "$here/power-down-13kb/power-down-13kb-nomusic.patch" cd "$out/tree/src" # Os .js na ordem das tags "; done=1} next} {print}' index.html > "$out/dist/index.html" find "$out/dist" -exec touch -t 202404250000 {} + ( 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 > "power-down-13kb-${COMMIT:0:7}-dist.tar.gz" && rm files.txt ) # Fonte publicado: a arvore ja com o patch, sem os arquivos que trazem a musica (song.js, songs.html e o zip pronto, # que a embute minificada), em tar deterministico. ( cd "$out/tree" && find . -type f ! -path ./src/song.js ! -name songs.html ! -name powerdown13k.zip | sed 's|^\./||' | LC_ALL=C sort > "$out/src-files.txt" \ && COPYFILE_DISABLE=1 tar --format=ustar --uid 0 --gid 0 --uname root --gname root -n -cf - -T "$out/src-files.txt" ) \ | gzip -n -9 > "$out/power-down-13kb-${COMMIT:0:7}-nomusic-src.tar.gz" rm -rf "$out/tree" "$out/src-files.txt" shasum -a 256 "$out/power-down-13kb-${COMMIT:0:7}-nomusic-src.tar.gz" ls -l "$out/power-down-13kb-${COMMIT:0:7}-dist.tar.gz" shasum -a 256 "$out/power-down-13kb-${COMMIT:0:7}-dist.tar.gz"