Skip to content

Commit ea06257

Browse files
committed
feat(gui): journaux détaillés par étape de compilation
- Ajout de logs pour chaque phase : BCASL, outils moteur, résolution commande, exécution. - Utilisation d'icônes et d'étapes numérotées (1/3, 2/3, 3/3) pour une meilleure clarté. - Amélioration des messages d'annulation et d'erreur dans les logs. - Transparence totale du cycle de compilation pour l'utilisateur dans la GUI.
1 parent 5c96b41 commit ea06257

2 files changed

Lines changed: 62 additions & 11 deletions

File tree

Core/Compiler/engine_runner.py

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -187,15 +187,16 @@ def run_engine_compile_streaming(
187187

188188
# ── 2. Resolve (program, args, env) from engine ──────────────────────────
189189
try:
190+
if on_stdout:
191+
on_stdout("🔨 Étape 1/3 : Vérification et installation des outils requis...")
192+
190193
import Core.engine as engines_loader
191194
engine_instance = engines_loader.create(engine_id)
192195

193196
# Ensure tools are installed (this may take time, so we do it in the thread)
194-
# Note: In GUI, we'll need a way to log this back. engine_runner.py is Qt-free
195-
# but callbacks on_stdout/on_stderr can be used.
196197
def _log(fr, en):
197198
if on_stdout:
198-
on_stdout(f"[tools] {en}")
199+
on_stdout(f" ➡️ {en}")
199200

200201
# We pass a dummy 'gui' object that supports log_i18n_level-like logging
201202
class LogBridge:
@@ -206,28 +207,40 @@ def tr(self, fr, en): return en # Simple fallback
206207
if hasattr(engine_instance, "ensure_tools_installed"):
207208
if not engine_instance.ensure_tools_installed(LogBridge(_log), stop_signal=stop_signal):
208209
if stop_signal and stop_signal():
209-
return _failure("Compilation cancelled")
210-
return _failure(f"Engine tools installation failed for '{engine_id}'")
210+
return _failure("Compilation annulée par l'utilisateur.")
211+
return _failure(f"Échec de l'installation des outils pour '{engine_id}'")
211212

212213
if stop_signal and stop_signal():
213-
return _failure("Compilation cancelled")
214+
return _failure("Compilation annulée.")
215+
216+
if on_stdout:
217+
on_stdout("⚙️ Étape 2/3 : Génération de la commande de compilation...")
214218

215219
program, args, engine_env = resolve_engine_command(engine_id, context, engine_config)
216220
except EngineRunnerError as exc:
217221
return _failure(str(exc))
218222
except Exception as exc:
219-
return _failure(f"Failed to prepare engine '{engine_id}': {exc}")
223+
return _failure(f"Échec de la préparation de l'engine '{engine_id}': {exc}")
224+
225+
if stop_signal and stop_signal():
226+
return _failure("Compilation annulée.")
220227

221228
# ── 3. Security hardening ────────────────────────────────────────────────
222229
try:
223230
full_env = dict(engine_env)
224231
full_env["ARK_WORKSPACE"] = str(workspace)
225232
safe_program, safe_args, safe_env = secure_command(program, args, full_env)
226233
except Exception as exc:
227-
return _failure(f"Unsafe compile command blocked: {exc}")
234+
return _failure(f"Commande de compilation non sécurisée bloquée : {exc}")
228235

229236
# ── 4. Run with streaming ────────────────────────────────────────────────
230237
command = [safe_program] + safe_args
238+
239+
if on_stdout:
240+
on_stdout(f"🚀 Étape 3/3 : Exécution du processus de compilation...")
241+
on_stdout(f" 💻 Commande : {' '.join(command)}")
242+
on_stdout("-" * 40)
243+
231244
try:
232245
process = subprocess.Popen(
233246
command,

Ui/Gui/Dialogs/CompilerDialog.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,12 @@ def _t(fr: str, en: str) -> str:
266266
return
267267

268268
self.set_controls_enabled(False)
269+
log_i18n_level(
270+
self,
271+
"info",
272+
"🔍 Lancement de la phase de pré-compilation (BCASL)...",
273+
"🔍 Starting pre-compilation phase (BCASL)...",
274+
)
269275

270276
def _after_bcasl(_report=None) -> None:
271277
if getattr(self, "_cancel_requested_during_precompile", False):
@@ -276,11 +282,23 @@ def _after_bcasl(_report=None) -> None:
276282
)
277283
return
278284
if not bcasl_report_allows_compile(self, _report):
285+
log_i18n_level(
286+
self,
287+
"error",
288+
"❌ Échec de la validation BCASL. La compilation ne peut pas continuer.",
289+
"❌ BCASL validation failed. Compilation cannot continue.",
290+
)
279291
self.set_controls_enabled(True)
280292
return
281-
282-
try:
283-
log_i18n_level(self, "info",
293+
294+
log_i18n_level(
295+
self,
296+
"success",
297+
"✅ Phase BCASL terminée avec succès.",
298+
"✅ BCASL phase completed successfully.",
299+
)
300+
301+
try: log_i18n_level(self, "info",
284302
f"Démarrage de la compilation avec {engine.name}...",
285303
f"Starting compilation with {engine.name}...",
286304
)
@@ -419,6 +437,12 @@ def _do_start() -> bool:
419437

420438
self.set_controls_enabled(False)
421439
_set_progress_indeterminate(self)
440+
log_i18n_level(
441+
self,
442+
"info",
443+
"🔍 Lancement de la phase de pré-compilation (BCASL)...",
444+
"🔍 Starting pre-compilation phase (BCASL)...",
445+
)
422446

423447
result = {"value": None}
424448

@@ -432,9 +456,23 @@ def _after_bcasl(_report=None) -> None:
432456
result["value"] = False
433457
return
434458
if not bcasl_report_allows_compile(self, _report):
459+
log_i18n_level(
460+
self,
461+
"error",
462+
"❌ Échec de la validation BCASL. La compilation ne peut pas continuer.",
463+
"❌ BCASL validation failed. Compilation cannot continue.",
464+
)
435465
self.set_controls_enabled(True)
436466
result["value"] = False
437467
return
468+
469+
log_i18n_level(
470+
self,
471+
"success",
472+
"✅ Phase BCASL terminée avec succès.",
473+
"✅ BCASL phase completed successfully.",
474+
)
475+
438476
ok = False
439477
try:
440478
ok = _do_start()

0 commit comments

Comments
 (0)