#!/usr/bin/env bash # Produit les archives distribuables dans dist/ : un executable unique par # plateforme (PCK embarque) + licence, credits et notice. Reexporte toujours # depuis zero pour ne jamais empaqueter un build perime. set -euo pipefail cd "$(dirname "$0")/.." VERSION="$(sed -n 's/^config\/version="\(.*\)"/\1/p' project.godot)" [ -n "${VERSION}" ] || { echo "config/version absent de project.godot" >&2; exit 1; } # Les presets d'export portent leur propre numero de version : on les aligne # sur project.godot (version/code = major*10000 + minor*100 + patch). IFS=. read -r V_MAJOR V_MINOR V_PATCH <<<"${VERSION}" VERSION_CODE=$((V_MAJOR * 10000 + V_MINOR * 100 + V_PATCH)) sed -i \ -e "s/^version\/name=.*/version\/name=\"${VERSION}\"/" \ -e "s/^version\/code=.*/version\/code=${VERSION_CODE}/" \ -e "s/^application\/short_version=.*/application\/short_version=\"${VERSION}\"/" \ -e "s/^application\/version=.*/application\/version=\"${VERSION}\"/" \ export_presets.cfg rm -rf build dist make export-linux export-windows export-android export-macos export-web >/dev/null write_notice() { cat > "$1/LISEZMOI.txt" <&2; exit 1; } done cp LICENSE README.md README-EN.md "${dir}/" cp assets/CREDITS.md "${dir}/CREDITS.md" write_notice "${dir}" "${launch}" "${saves}" } LINUX="aventuriers-des-mots-${VERSION}-linux-x86_64" WINDOWS="aventuriers-des-mots-${VERSION}-windows-x86_64" stage "${LINUX}" build/linux/aventuriers_des_mots.x86_64 \ "./aventuriers_des_mots.x86_64 (au besoin : chmod +x aventuriers_des_mots.x86_64)" \ "~/.local/share/godot/app_userdata/Les Aventuriers des mots/" stage "${WINDOWS}" build/windows/aventuriers_des_mots.exe \ "double-clic sur aventuriers_des_mots.exe" \ "%APPDATA%\\Godot\\app_userdata\\Les Aventuriers des mots\\" ANDROID="aventuriers-des-mots-${VERSION}-android" MACOS="aventuriers-des-mots-${VERSION}-macos-universal" CHROMEOS="aventuriers-des-mots-${VERSION}-chromeos" stage "${ANDROID}" build/android/aventuriers_des_mots.apk \ "copier l'APK sur la tablette ou le téléphone, l'ouvrir et accepter l'installation depuis cette source (Android 7 ou plus ; arm64 et x86_64)" \ "stockage privé de l'application (Réglages Android > Applications)" # macOS : application non signée par un développeur identifié (signature ad hoc). stage "${MACOS}" build/macos/aventuriers_des_mots.zip \ "décompresser l'archive interne, puis clic droit > Ouvrir la première fois (application non notariée)" \ "~/Library/Application Support/Godot/app_userdata/Les Aventuriers des mots/" unzip -q "dist/${MACOS}/aventuriers_des_mots.zip" -d "dist/${MACOS}" rm "dist/${MACOS}/aventuriers_des_mots.zip" # ChromeOS : l'APK (runtime Android) ou la version Web servie en local. stage "${CHROMEOS}" build/android/aventuriers_des_mots.apk \ "soit installer l'APK (Chromebook avec Android activé), soit servir le dossier web/ (voir LISEZMOI-WEB.txt)" \ "stockage privé de l'application, ou du navigateur pour la version web" mkdir -p "dist/${CHROMEOS}/web" cp build/web/* "dist/${CHROMEOS}/web/" cp tools/serve_web.py "dist/${CHROMEOS}/lancer-web.py" cat > "dist/${CHROMEOS}/lancer-web.sh" <<'LAUNCH' #!/usr/bin/env bash cd "$(dirname "$0")" && exec python3 lancer-web.py LAUNCH chmod +x "dist/${CHROMEOS}/lancer-web.sh" printf '@echo off\r\ncd /d "%%~dp0"\r\npy lancer-web.py || python lancer-web.py\r\n' \ > "dist/${CHROMEOS}/lancer-web.bat" cat > "dist/${CHROMEOS}/LISEZMOI-WEB.txt" < SHA256SUMS) rm -rf "dist/${LINUX}" "dist/${WINDOWS}" "dist/${ANDROID}" "dist/${MACOS}" "dist/${CHROMEOS}" ls -lh dist