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>
This commit is contained in:
parent
1c96fb0acc
commit
1aa3da8de5
3 changed files with 46 additions and 1 deletions
1
Makefile
1
Makefile
|
|
@ -370,6 +370,7 @@ inventaire-verifier: ansible-runtime
|
|||
ansible-inventory -i $(INVENTAIRE_PRODUCTION) --list > /dev/null
|
||||
python3 scripts/inventory_host.py --inventaire $(INVENTAIRE_PRODUCTION) verifier-playbooks --dossier-playbooks $(DOSSIER_PLAYBOOKS_GROUPES)
|
||||
python3 scripts/inventory_host.py --inventaire $(INVENTAIRE_PRODUCTION) --dependances $(FICHIER_DEPENDANCES) verifier-dependances --dossier-playbooks $(DOSSIER_PLAYBOOKS_GROUPES)
|
||||
python3 scripts/verifier_gui.py
|
||||
python3 scripts/serveurs.py verifier
|
||||
python3 scripts/applications.py verifier
|
||||
python3 scripts/bases_donnees.py verifier
|
||||
|
|
|
|||
|
|
@ -1060,7 +1060,7 @@ HTML = r"""<!doctype html>
|
|||
|
||||
function dessinerServeurs() {
|
||||
const cible = document.getElementById('grilles');
|
||||
if (!serveurs.length) { cible.innerHTML = '<div class="vide"><b>Aucun serveur dans le plan</b>Lance « make serveurs-bootstrap » pour générer docs/serveurs.yml depuis l\\'inventaire.</div>'; return; }
|
||||
if (!serveurs.length) { cible.innerHTML = '<div class="vide"><b>Aucun serveur dans le plan</b>Lance « make serveurs-bootstrap » pour générer docs/serveurs.yml depuis l’inventaire.</div>'; return; }
|
||||
const clsStatut = (s) => s === 'reconcilie' ? 'actif' : (s === 'divergence' ? 'bloque' : 'attente');
|
||||
const libStatut = (s) => s === 'reconcilie' ? 'réconcilié' : (s === 'divergence' ? 'divergence' : 'absent inv.');
|
||||
const lignes = serveurs.map(s => `
|
||||
|
|
|
|||
44
scripts/verifier_gui.py
Normal file
44
scripts/verifier_gui.py
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
#!/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())
|
||||
Reference in a new issue