This repository has been archived on 2026-06-26. You can view files and clone it, but cannot push or open issues or pull requests.
Set-OPS/scripts/verifier_gui.py
Daniel Allaire 1aa3da8de5 Corriger l'erreur de syntaxe JS qui cassait tout le GUI
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>
2026-06-23 21:28:52 -04:00

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())