# Pecas comuns dos scripts de build dos jogos HTML5 do Liberated Pixel Cup (castle-defense, slime-attack, pixel-quest, # neverwell-moor). Nao roda sozinho: e lido (source) por build-.sh, que define NAME, TAG, URL, SHA256 e KIND # (zip ou tgz) antes de chamar lpc_unpack e lpc_pack. # # O jogo servido e o fonte do autor, sem minificacao: o script baixa o arquivo original (conferido pelo SHA-256), tira o # que nao vai (lixo do macOS e o que o /deletions.txt lista), aplica o patch publicado (/.patch), copia # os arquivos nossos de /files/ por cima e empacota tudo num .tar.gz que sai igual a cada execucao. here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/$NAME-$TAG" cache="$root/artifacts/build/cache" mkdir -p "$cache" fetch() { # if [ ! -f "$cache/$2" ]; then curl -fsSL -A "Mozilla/5.0" --retry 4 "$1" -o "$cache/$2.partial" && mv "$cache/$2.partial" "$cache/$2" fi echo "$3 $cache/$2" | shasum -a 256 -c - } lpc_unpack() { # baixa o original e deixa a arvore em $out/tree, ja com as remocoes e o patch aplicados local file="$NAME-$TAG.$KIND" fetch "$URL" "$file" "$SHA256" rm -rf "$out" mkdir -p "$out/tree" if [ "$KIND" = zip ]; then unzip -q "$cache/$file" -d "$out/tree" else tar -xzf "$cache/$file" -C "$out/tree" --strip-components 1 fi rm -rf "$out/tree/__MACOSX" find "$out/tree" -name .DS_Store -delete cd "$out/tree" if [ -f "$here/$NAME/deletions.txt" ]; then while IFS= read -r path; do [ -n "$path" ] && { [ -e "./$path" ] || { echo "deletions.txt: $path nao existe" >&2; exit 1; }; rm -rf "./$path"; }; done < "$here/$NAME/deletions.txt" fi patch -s -p1 < "$here/$NAME/$NAME.patch" } lpc_pack() { # copia $NAME/files/ por cima da arvore e gera artifacts/build/-/--dist.tar.gz cd "$out" [ -d "$here/$NAME/files" ] && cp -R "$here/$NAME/files/." tree/ mv tree dist find dist -exec touch -t 202611060000 {} + 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 > "$NAME-$TAG-dist.tar.gz" rm files.txt du -sh dist rm -rf dist shasum -a 256 "$out/$NAME-$TAG-dist.tar.gz" }