dessinerServeurs contenait une apostrophe mal echappee (l\\'inventaire) qui, une fois rendue, terminait prematurement la chaine JS : une seule erreur de syntaxe fait tomber tout le script -> page inutilisable. Remplace par l'apostrophe typographique (sans echappement). Garde-fou : scripts/verifier_gui.py extrait le JS embarque et le passe a `node --check` (saute si node absent), integre a make inventaire-verifier. py_compile ne voyait pas le JS ; ce trou est desormais ferme. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
#!/usr/bin/env python3
|
|
"""Verifie la syntaxe du JavaScript embarque dans inventory_gui.py.
|
|
|
|
Garde-fou : py_compile ne voit pas le JS (il est dans une chaine Python).
|
|
Une seule erreur de syntaxe JS casse toute la page. On extrait le JS et on le
|
|
passe a `node --check`. Si node est absent, la verification est sautee (signale).
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import re
|
|
import shutil
|
|
import subprocess
|
|
import sys
|
|
import tempfile
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent))
|
|
|
|
import inventory_gui as g # noqa: E402
|
|
|
|
|
|
def main() -> int:
|
|
if not shutil.which("node"):
|
|
print("node absent : verification de la syntaxe JS du GUI sautee.")
|
|
return 0
|
|
html = g.HTML.replace("__JETON__", "TEST")
|
|
blocs = re.findall(r"<script>(.*?)</script>", html, re.S)
|
|
if not blocs:
|
|
print("erreur: aucun bloc <script> trouve dans le GUI.", file=sys.stderr)
|
|
return 1
|
|
with tempfile.NamedTemporaryFile("w", suffix=".js", delete=False, encoding="utf-8") as fichier:
|
|
fichier.write("\n".join(blocs))
|
|
chemin = fichier.name
|
|
resultat = subprocess.run(["node", "--check", chemin], capture_output=True, text=True)
|
|
if resultat.returncode != 0:
|
|
print(resultat.stderr, file=sys.stderr)
|
|
return 1
|
|
print("JS du GUI : syntaxe valide (node --check).")
|
|
return 0
|
|
|
|
|
|
if __name__ == "__main__":
|
|
raise SystemExit(main())
|