À VÉRIFIER : Amélioration de la gestion des messages d'état dans CommandExecutor

This commit is contained in:
Moncef STITI 2025-02-06 21:13:55 +01:00
parent 29ad274f28
commit 307f6d38e6

@ -13,23 +13,23 @@ public class CommandExecutor {
} }
public void execute(Rule rule) { public void execute(Rule rule) {
if (rule.getCommands().isEmpty()) {
System.out.println("bake: Nothing to be done for '" + rule.getName() + "'.");
return;
}
// On vérifie d'abord si cette règle a besoin d'être mise à jour // On vérifie d'abord si cette règle a besoin d'être mise à jour
boolean ruleNeedsUpdate = rule.needsUpdate(); boolean ruleNeedsUpdate = rule.needsUpdate();
if (ruleNeedsUpdate) { if (ruleNeedsUpdate) {
needsUpdate = true; // Au moins une règle doit être mise à jour needsUpdate = true; // Au moins une règle doit être mise à jour
} }
// Si la règle a besoin d'être mise à jour et qu'il n'y a pas de commandes
if (ruleNeedsUpdate && rule.getCommands().isEmpty()) {
return; // On ne fait rien mais on ne montre pas de message
}
for (String command : rule.getCommands()) { for (String command : rule.getCommands()) {
if (isCircular){ if (isCircular){
System.out.println(command); System.out.println(command);
} }
// Mais on n'exécute que si nécessaire // On n'exécute que si nécessaire
if (ruleNeedsUpdate) { if (ruleNeedsUpdate) {
try { try {
if(!isCircular){ if(!isCircular){
@ -78,10 +78,19 @@ public class CommandExecutor {
} }
} }
// On affiche "up to date" seulement après avoir traité TOUTES les règles // On n'affiche le message "up to date" que si :
// et seulement si AUCUNE règle n'avait besoin d'être mise à jour // 1. C'est la première cible
if (rule.getName().equals(BakefileParser.getFirstTarget()) && !needsUpdate) { // 2. Aucune règle n'avait besoin d'être mise à jour
// 3. On a des commandes à exécuter
if (rule.getName().equals(BakefileParser.getFirstTarget()) && !needsUpdate && !rule.getCommands().isEmpty()) {
System.out.println("bake: `" + rule.getName() + "' is up to date."); System.out.println("bake: `" + rule.getName() + "' is up to date.");
} }
// On affiche "Nothing to be done" uniquement si :
// 1. C'est la première cible
// 2. Aucune règle n'avait besoin d'être mise à jour
// 3. On n'a PAS de commandes à exécuter
else if (rule.getName().equals(BakefileParser.getFirstTarget()) && !needsUpdate && rule.getCommands().isEmpty()) {
System.out.println("bake: Nothing to be done for '" + rule.getName() + "'.");
}
} }
} }