#!/usr/bin/env bash # Build distributable desktop executables with the Godot export pipeline. # # Requirements: # - Godot 4.3 (or the version in project.godot `config/features`) on PATH, # with export templates installed (see docs/RELEASING.md). # - Run from the repository root. # # Produces: # build/step-line-linux-.x86_64 # build/step-line-windows-.exe # build/step-line-macos-.zip # build/step-line-web-.zip (Godot web build: static hosting, no threads) # set -euo pipefail GODOT="${GODOT:-godot}" VERSION="$(grep -oP 'config/version="\K[^"]+' project.godot)" mkdir -p build # Presets now embed the PCK into a single binary; drop stale .pck leftovers. rm -f build/*.pck echo "==> Exporting Linux (x86_64)" "$GODOT" --headless --export-release "Linux" "build/step-line-linux-${VERSION}.x86_64" echo "==> Exporting Windows Desktop" "$GODOT" --headless --export-release "Windows Desktop" "build/step-line-windows-${VERSION}.exe" echo "==> Exporting macOS" "$GODOT" --headless --export-release "macOS" "build/step-line-macos-${VERSION}.zip" echo "==> Exporting Web (no threads, static-hosting friendly)" rm -rf build/web mkdir -p build/web "$GODOT" --headless --export-release "Web" "build/web/index.html" # Ship the web build as a single zip so it can be downloaded and served as-is. rm -f "build/step-line-web-${VERSION}.zip" if command -v zip >/dev/null 2>&1; then (cd build/web && zip -q -r "../step-line-web-${VERSION}.zip" .) else python3 - "$PWD/build/web" "$PWD/build/step-line-web-${VERSION}.zip" <<'PYZIP' import os, sys, zipfile src, out = sys.argv[1], sys.argv[2] with zipfile.ZipFile(out, "w", zipfile.ZIP_DEFLATED) as archive: for root, _dirs, files in os.walk(src): for name in files: path = os.path.join(root, name) archive.write(path, os.path.relpath(path, src)) PYZIP fi echo "" echo "Artifacts:" ls -la build/*"${VERSION}"* echo "" echo "Upload to: https://git.allucanget.biz/zwitschi/security-game/releases" echo "See docs/RELEASING.md for the full release checklist."