#!/usr/bin/env bash # Gera o flutter.pgapp do Flutter (mit-mit, PyWeek 29, 2019) a partir do zip original do PyWeek (sha256 abaixo), com # um patch (flutter/web.patch): laco principal assincrono (exigido pelo pygbag) e o main.py da raiz (o do jogo vira # src/fl_main.py). Todo o texto do jogo esta em imagens e foi desenhado na fonte "Mechfire" (so "Freeware", sem termos # de redistribuicao): as 17 imagens com letras (titulo, vitoria, tres cenas da historia, game over, continue, dicas de # controle, avisos de item, BOSS e os numeros das portas) sao trocadas pelas de flutter/gfx/, redesenhadas com a Press Start 2P (SIL OFL 1.1) # por flutter/fl_art.py; o resto de cada imagem fica igual. Zip deterministico (Builds/pgapp.py). # # src/FredGames.Bundler/Builds/build-flutter.sh # # Saida: artifacts/build/flutter/flutter.pgapp set -euo pipefail SHA256=5dff42de4f17150cc239f85425c7c5f358c5b0b71b7ac5503cf8153ff8093937 here="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" root="$(git -C "$here" rev-parse --show-toplevel 2>/dev/null || pwd)" out="$root/artifacts/build/flutter" cache="$root/artifacts/build/cache" mkdir -p "$cache" zip="$cache/flutter_pyweek29.zip" [ -f "$zip" ] || curl -fsSL "https://s3.eu-west-2.amazonaws.com/media.pyweek.org/29/mit-mit-29/flutter_pyweek29.zip" -o "$zip" echo "$SHA256 $zip" | shasum -a 256 -c - rm -rf "$out" mkdir -p "$out/tree" unzip -q "$zip" -d "$out/tree" -x '__MACOSX/*' g="$out/tree/flutter_pyweek29" find "$g" \( -name __pycache__ -o -name .DS_Store -o -name '*.pyc' -o -name '*.swp' \) -prune -exec rm -rf {} + patch -d "$g" -p1 < "$here/flutter/web.patch" cp "$here"/flutter/gfx/*.png "$g/data/gfx/" python3 -I "$here/pgapp.py" "$g" "$out/flutter.pgapp" shasum -a 256 "$out/flutter.pgapp"