mirror of
https://github.com/deunix-educ/aventuriers-des-mots.git
synced 2026-10-13 02:11:58 +02:00
Add serve-web target and web launcher scripts in the ChromeOS archive (0.9.2)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -24,6 +24,7 @@ Le `Makefile` est le seul point d'entrée pour les opérations système. Tenir c
|
|||||||
- `make export-linux` / `make export-windows` : exports dans `build/`
|
- `make export-linux` / `make export-windows` : exports dans `build/`
|
||||||
- `make screenshot SCENE=… OUT=… ARGS=…` : capture le rendu réel d'une scène dans une fenêtre (outil de développement, ouvre brièvement une fenêtre)
|
- `make screenshot SCENE=… OUT=… ARGS=…` : capture le rendu réel d'une scène dans une fenêtre (outil de développement, ouvre brièvement une fenêtre)
|
||||||
- `make export-android` / `make export-macos` / `make export-web` : APK Android (arm64 + x86_64, aussi pour ChromeOS), application macOS universelle (zip, signature ad hoc), version web
|
- `make export-android` / `make export-macos` / `make export-web` : APK Android (arm64 + x86_64, aussi pour ChromeOS), application macOS universelle (zip, signature ad hoc), version web
|
||||||
|
- `make serve-web` : exporte puis sert la version web en local (127.0.0.1) et ouvre le navigateur (`tools/serve_web.py`)
|
||||||
- `make package` : réexporte puis produit les archives distribuables (Linux, Windows, Android, macOS, ChromeOS ; licence + crédits + notice) et `SHA256SUMS` dans `dist/`
|
- `make package` : réexporte puis produit les archives distribuables (Linux, Windows, Android, macOS, ChromeOS ; licence + crédits + notice) et `SHA256SUMS` dans `dist/`
|
||||||
|
|
||||||
## Conventions de code
|
## Conventions de code
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ GD_SOURCES := autoload scripts tests
|
|||||||
|
|
||||||
.DEFAULT_GOAL := help
|
.DEFAULT_GOAL := help
|
||||||
|
|
||||||
.PHONY: help setup import run lint format validate-data test check content-review generate-dictation-audio generate-sounds export-linux export-windows export-android export-macos export-web package screenshot
|
.PHONY: serve-web help setup import run lint format validate-data test check content-review generate-dictation-audio generate-sounds export-linux export-windows export-android export-macos export-web package screenshot
|
||||||
|
|
||||||
# Liste les commandes : toute cible suivie de « ## description » y figure.
|
# Liste les commandes : toute cible suivie de « ## description » y figure.
|
||||||
help: ## Affiche cette aide
|
help: ## Affiche cette aide
|
||||||
@@ -91,3 +91,6 @@ export-macos: import ## Exporte l'application macOS (zip) dans build/macos/
|
|||||||
export-web: import ## Exporte la version Web (navigateur, ChromeOS) dans build/web/
|
export-web: import ## Exporte la version Web (navigateur, ChromeOS) dans build/web/
|
||||||
mkdir -p build/web
|
mkdir -p build/web
|
||||||
$(GODOT_BIN) --headless --path . --export-release "Web" build/web/index.html
|
$(GODOT_BIN) --headless --path . --export-release "Web" build/web/index.html
|
||||||
|
|
||||||
|
serve-web: export-web ## Exporte puis sert la version web en local et ouvre le navigateur
|
||||||
|
$(PYTHON) tools/serve_web.py build/web
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ make run # runs the game
|
|||||||
| `make content-review` | regenerates `docs/review/content-review.md` (content validation document) |
|
| `make content-review` | regenerates `docs/review/content-review.md` (content validation document) |
|
||||||
| `make generate-dictation-audio` | generates the placeholder dictation audio |
|
| `make generate-dictation-audio` | generates the placeholder dictation audio |
|
||||||
| `make help` | lists the available commands |
|
| `make help` | lists the available commands |
|
||||||
|
| `make serve-web` | exports, then serves the web build locally and opens the browser |
|
||||||
| `make export-linux` / `make export-windows` / `make export-android` / `make export-macos` / `make export-web` | exports into `build/` |
|
| `make export-linux` / `make export-windows` / `make export-android` / `make export-macos` / `make export-web` | exports into `build/` |
|
||||||
| `make package` | builds the distributable archives in `dist/` (single executable + license + credits) |
|
| `make package` | builds the distributable archives in `dist/` (single executable + license + credits) |
|
||||||
|
|
||||||
|
|||||||
@@ -30,6 +30,7 @@ make run # lance le jeu
|
|||||||
| `make content-review` | régénère `docs/review/content-review.md` (document de validation du contenu) |
|
| `make content-review` | régénère `docs/review/content-review.md` (document de validation du contenu) |
|
||||||
| `make generate-dictation-audio` | génère l'audio provisoire des dictées |
|
| `make generate-dictation-audio` | génère l'audio provisoire des dictées |
|
||||||
| `make help` | liste les commandes disponibles |
|
| `make help` | liste les commandes disponibles |
|
||||||
|
| `make serve-web` | exporte puis sert la version web en local et ouvre le navigateur |
|
||||||
| `make export-linux` / `make export-windows` / `make export-android` / `make export-macos` / `make export-web` | exports dans `build/` |
|
| `make export-linux` / `make export-windows` / `make export-android` / `make export-macos` / `make export-web` | exports dans `build/` |
|
||||||
| `make package` | produit les archives distribuables dans `dist/` (exécutable unique + licence + crédits) |
|
| `make package` | produit les archives distribuables dans `dist/` (exécutable unique + licence + crédits) |
|
||||||
|
|
||||||
|
|||||||
@@ -82,3 +82,4 @@ Tout ce qui suit ne peut pas être vérifié sans écran (rendu, mise en page, a
|
|||||||
- `make export-macos` : archive vérifiée (structure .app, signature ad hoc) ; **jamais lancée** (pas de Mac). Au premier lancement : clic droit > Ouvrir.
|
- `make export-macos` : archive vérifiée (structure .app, signature ad hoc) ; **jamais lancée** (pas de Mac). Au premier lancement : clic droit > Ouvrir.
|
||||||
- `make export-web` : fichiers générés ; **jamais ouvert dans un navigateur**. Servir `build/web/` avec `python3 -m http.server`, ouvrir dans Chrome, vérifier son (le navigateur exige un premier clic), sauvegarde et plein écran.
|
- `make export-web` : fichiers générés ; **jamais ouvert dans un navigateur**. Servir `build/web/` avec `python3 -m http.server`, ouvrir dans Chrome, vérifier son (le navigateur exige un premier clic), sauvegarde et plein écran.
|
||||||
- Touche Entrée : en dictée et en correction, Entrée valide ; une seconde pression sur Entrée pendant le retour ne doit pas compter une réponse de plus.
|
- Touche Entrée : en dictée et en correction, Entrée valide ; une seconde pression sur Entrée pendant le retour ne doit pas compter une réponse de plus.
|
||||||
|
- Version web : `make serve-web` (ou `lancer-web.sh` / `lancer-web.bat` de l'archive ChromeOS) ; son confirmé à la main après un clic dans la page (0.9.1).
|
||||||
|
|||||||
+4
-4
@@ -71,8 +71,8 @@ gradle_build/use_gradle_build=false
|
|||||||
package/unique_name="org.deunix.aventuriersdesmots"
|
package/unique_name="org.deunix.aventuriersdesmots"
|
||||||
package/name="Les Aventuriers des mots"
|
package/name="Les Aventuriers des mots"
|
||||||
package/signed=true
|
package/signed=true
|
||||||
version/code=901
|
version/code=902
|
||||||
version/name="0.9.1"
|
version/name="0.9.2"
|
||||||
architectures/armeabi-v7a=false
|
architectures/armeabi-v7a=false
|
||||||
architectures/arm64-v8a=true
|
architectures/arm64-v8a=true
|
||||||
architectures/x86=false
|
architectures/x86=false
|
||||||
@@ -107,8 +107,8 @@ script_export_mode=2
|
|||||||
|
|
||||||
binary_format/architecture="universal"
|
binary_format/architecture="universal"
|
||||||
application/bundle_identifier="org.deunix.aventuriersdesmots"
|
application/bundle_identifier="org.deunix.aventuriersdesmots"
|
||||||
application/short_version="0.9.1"
|
application/short_version="0.9.2"
|
||||||
application/version="0.9.1"
|
application/version="0.9.2"
|
||||||
application/min_macos_version_x86_64="10.12"
|
application/min_macos_version_x86_64="10.12"
|
||||||
application/min_macos_version_arm64="11.0"
|
application/min_macos_version_arm64="11.0"
|
||||||
codesign/codesign=1
|
codesign/codesign=1
|
||||||
|
|||||||
+1
-1
@@ -11,7 +11,7 @@ config_version=5
|
|||||||
[application]
|
[application]
|
||||||
|
|
||||||
config/name="Les Aventuriers des mots"
|
config/name="Les Aventuriers des mots"
|
||||||
config/version="0.9.1"
|
config/version="0.9.2"
|
||||||
run/main_scene="res://scenes/boot/boot.tscn"
|
run/main_scene="res://scenes/boot/boot.tscn"
|
||||||
config/features=PackedStringArray("4.6", "Forward Plus")
|
config/features=PackedStringArray("4.6", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|||||||
+14
-4
@@ -84,13 +84,23 @@ stage "${CHROMEOS}" build/android/aventuriers_des_mots.apk \
|
|||||||
"stockage privé de l'application, ou du navigateur pour la version web"
|
"stockage privé de l'application, ou du navigateur pour la version web"
|
||||||
mkdir -p "dist/${CHROMEOS}/web"
|
mkdir -p "dist/${CHROMEOS}/web"
|
||||||
cp build/web/* "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" <<WEB
|
cat > "dist/${CHROMEOS}/LISEZMOI-WEB.txt" <<WEB
|
||||||
Version web (navigateur, hors ligne une fois servie localement)
|
Version web (navigateur, hors ligne une fois servie localement)
|
||||||
|
|
||||||
Un navigateur ne lit pas ces fichiers directement : ils doivent être servis
|
Lancer : double-clic sur lancer-web.sh (Linux, macOS) ou lancer-web.bat
|
||||||
par un petit serveur HTTP. Depuis le dossier web/ :
|
(Windows), ou en terminal : python3 lancer-web.py
|
||||||
python3 -m http.server 8080
|
Python 3 est nécessaire. Le navigateur s'ouvre sur le jeu ; cliquer une
|
||||||
puis ouvrir http://localhost:8080 dans Chrome.
|
fois dans la page pour activer le son. Ctrl+C dans le terminal arrête le
|
||||||
|
serveur.
|
||||||
|
|
||||||
La progression est conservée dans le stockage du navigateur : ne pas
|
La progression est conservée dans le stockage du navigateur : ne pas
|
||||||
effacer les données du site, et utiliser l'espace adulte pour exporter.
|
effacer les données du site, et utiliser l'espace adulte pour exporter.
|
||||||
WEB
|
WEB
|
||||||
|
|||||||
Executable
+42
@@ -0,0 +1,42 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""Sert la version web du jeu en local et ouvre le navigateur.
|
||||||
|
|
||||||
|
Usage : serve_web.py [dossier] (par defaut : le dossier « web » a cote du script)
|
||||||
|
Aucune connexion Internet : le serveur n'ecoute que sur 127.0.0.1.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import functools
|
||||||
|
import http.server
|
||||||
|
import sys
|
||||||
|
import webbrowser
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
PORTS = range(8080, 8100)
|
||||||
|
|
||||||
|
|
||||||
|
def main() -> int:
|
||||||
|
root = Path(sys.argv[1]) if len(sys.argv) > 1 else Path(__file__).resolve().parent / "web"
|
||||||
|
if not (root / "index.html").is_file():
|
||||||
|
print(f"index.html introuvable dans {root}", file=sys.stderr)
|
||||||
|
return 1
|
||||||
|
handler = functools.partial(http.server.SimpleHTTPRequestHandler, directory=str(root))
|
||||||
|
for port in PORTS:
|
||||||
|
try:
|
||||||
|
server = http.server.ThreadingHTTPServer(("127.0.0.1", port), handler)
|
||||||
|
except OSError:
|
||||||
|
continue
|
||||||
|
url = f"http://localhost:{port}/index.html"
|
||||||
|
print(f"Les Aventuriers des mots : {url}")
|
||||||
|
print("Cliquer une fois dans la page pour activer le son. Ctrl+C pour arreter.")
|
||||||
|
webbrowser.open(url)
|
||||||
|
try:
|
||||||
|
server.serve_forever()
|
||||||
|
except KeyboardInterrupt:
|
||||||
|
pass
|
||||||
|
return 0
|
||||||
|
print("Aucun port libre entre 8080 et 8099.", file=sys.stderr)
|
||||||
|
return 1
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == "__main__":
|
||||||
|
sys.exit(main())
|
||||||
Reference in New Issue
Block a user