Files
SAE32_2024/src/fr/monlouyan/bakefile/BakeEngine.java

39 lines
1.1 KiB
Java

package fr.monlouyan.bakefile;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class BakeEngine {
private BakefileParser parser;
private DependencyResolver resolver;
private CommandExecutor executor;
private static Map<String, Rule> ruleMap;
public BakeEngine() {
this.parser = new BakefileParser("Bakefile");
this.resolver = new DependencyResolver(BakeCLI.isDebug());
ruleMap = new HashMap<>();
}
public static boolean hasRule(String target) {
// Vérifie si une règle existe pour créer cette cible
return ruleMap.containsKey(target);
}
public void run() {
List<Rule> rules = parser.parse();
for (Rule rule : rules) {
ruleMap.put(rule.getName(), rule);
}
List<Rule> rulesToBuild = resolver.resolve(rules, BakeCLI.getTargets());
this.executor = new CommandExecutor(BakeCLI.isDebug(), resolver.isCircular());
for (Rule rule : rulesToBuild) {
executor.execute(rule);
}
}
}