Correction bug

This commit is contained in:
Moncef STITI 2025-03-15 19:37:33 +01:00
parent 297ceba632
commit 5cad10ebbb
2 changed files with 34 additions and 86 deletions
Makefile
src/fr/monlouyan/bakefile

118
Makefile

@ -1,6 +1,6 @@
# Définition des variables
PACKAGE = fr.monlouyan.bakefile
ENTRY = Main
SOURCEDIR = ./src/fr/monlouyan/bakefile/
BUILDDIR = ./build/
DOCDIR = ./doc/
JARNAME = bakefile.jar
@ -9,94 +9,42 @@ MANIFESTPATH = Manifest.MF
SOURCEDIR = ./src/
TESTDIR = ./tests/
# Liste des fichiers source et leurs correspondances en .class
BAKECLI_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakeCLI.class
TIMESTAMPMANAGER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/TimestampManager.class
BAKEFILEPARSER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakefileParser.class
DEPENDENCYRESOLVER_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/DependencyResolver.class
COMMANDEXECUTOR_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/CommandExecutor.class
BAKEENGINE_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/BakeEngine.class
RULE_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/Rule.class
MAIN_CLASS = $(BUILDDIR)fr/monlouyan/bakefile/Main.class
SOURCES := $(shell find $(SOURCEDIR) -name '*.java')
# Fichiers source
BAKECLI_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakeCLI.java
TIMESTAMPMANAGER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/TimestampManager.java
BAKEFILEPARSER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakefileParser.java
DEPENDENCYRESOLVER_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/DependencyResolver.java
COMMANDEXECUTOR_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/CommandExecutor.java
BAKEENGINE_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/BakeEngine.java
RULE_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/Rule.java
MAIN_SRC = $(SOURCEDIR)fr/monlouyan/bakefile/Main.java
all:
@make clean
@make compile
@make jar
# Cible principale
all: init $(MAIN_CLASS) $(JARNAME) deploy-tests
compile:
@echo "Compiling..."
javac -cp $(CLASSP) -d $(BUILDDIR) $(SOURCES) -Xlint:unchecked -Xlint:deprecation
@echo "Done."
# Initialiser les répertoires nécessaires
init:
@mkdir -p $(BUILDDIR)
@mkdir -p $(BUILDDIR)fr/monlouyan/bakefile/
$(MAIN_CLASS): $(MAIN_SRC) $(BAKECLI_CLASS) $(BAKEENGINE_CLASS)
@echo "Compilation de $(MAIN_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(MAIN_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
$(RULE_CLASS): $(RULE_SRC) $(BAKECLI_CLASS)
@echo "Compilation de $(RULE_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(RULE_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
$(TIMESTAMPMANAGER_CLASS): $(TIMESTAMPMANAGER_SRC)
@echo "Compilation de $(TIMESTAMPMANAGER_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(TIMESTAMPMANAGER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
$(DEPENDENCYRESOLVER_CLASS): $(DEPENDENCYRESOLVER_SRC) $(RULE_CLASS)
@echo "Compilation de $(DEPENDENCYRESOLVER_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(DEPENDENCYRESOLVER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
$(COMMANDEXECUTOR_CLASS): $(COMMANDEXECUTOR_SRC) $(RULE_CLASS) $(TIMESTAMPMANAGER_CLASS)
@echo "Compilation de $(COMMANDEXECUTOR_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(COMMANDEXECUTOR_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
$(BAKEFILEPARSER_CLASS): $(BAKEFILEPARSER_SRC) $(RULE_CLASS)
@echo "Compilation de $(BAKEFILEPARSER_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKEFILEPARSER_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
$(BAKEENGINE_CLASS): $(BAKEENGINE_SRC) $(BAKEFILEPARSER_CLASS) $(DEPENDENCYRESOLVER_CLASS) $(COMMANDEXECUTOR_CLASS) $(RULE_CLASS) $(BAKECLI_CLASS)
@echo "Compilation de $(BAKEENGINE_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKEENGINE_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
$(BAKECLI_CLASS): $(BAKECLI_SRC)
@echo "Compilation de $(BAKECLI_SRC)..."
@javac -cp $(CLASSP) -d $(BUILDDIR) $(BAKECLI_SRC) -Xlint:unchecked -Xlint:deprecation -sourcepath src
# Création du fichier JAR (on s'assure que tout est compilé)
$(JARNAME): $(MAIN_CLASS) $(RULE_CLASS) $(TIMESTAMPMANAGER_CLASS) $(DEPENDENCYRESOLVER_CLASS) $(COMMANDEXECUTOR_CLASS) $(BAKEFILEPARSER_CLASS)
@echo "Création du fichier JAR..."
@jar cfm $(JARNAME) $(MANIFESTPATH) -C $(BUILDDIR) fr/monlouyan/bakefile
@echo "Fichier JAR créé : $(JARNAME)"
# Génération de la documentation Javadoc
javadoc:
@echo "Génération de la documentation Javadoc..."
@javadoc -d $(DOCDIR) -sourcepath $(SOURCEDIR) -subpackages $(PACKAGE)
@echo "Documentation Javadoc générée dans $(DOCDIR)"
see-javadoc: javadoc
@echo "Ouverture de la documentation Javadoc sur Firefox..."
@firefox $(DOCDIR)/index.html
# Déploiement du JAR dans les répertoires de test
deploy-tests: $(JARNAME)
@find $(TESTDIR) -type d -name 'bake' -exec cp $(JARNAME) {} \;
# Nettoyage des fichiers générés
clean:
@echo "Nettoyage des fichiers générés..."
@rm -rf $(BUILDDIR)
@rm -rf $(DOCDIR)
@echo "Cleaning up..."
@rm -rf $(BUILDDIR)* $(DOCDIR)*
@rm -f $(JARNAME)
@find $(TESTDIR) -name "$(JARNAME)" -delete
@echo "Nettoyage terminé."
@echo "Done."
# Cibles spéciales
.PHONY: all init javadoc deploy-tests clean
javadoc:
@echo "Generating javadoc..."
@javadoc -d $(DOCDIR) -sourcepath src -subpackages $(PACKAGE)
@echo "Done."
jar:
@echo "Creating jar..."
@jar cfm $(JARNAME) $(MANIFESTPATH) -C $(BUILDDIR) fr/monlouyan/bakefile
@echo "Done."
@make deploy-tests
deploy-tests:
@echo "Deploying JAR to 'bake' directories..."
@find $(TESTDIR) -type d -name 'bake' -exec cp $(JARNAME) {} \;
@echo "Done."
run_test:
@echo "Running tests..."
@java -cp build fr.monlouyan.bakefile.tests.BakeTestRunner
@echo "Done."

@ -28,7 +28,7 @@ public class BakefileParser {
* Format : "nom1 nom2 nom3 : dépendance1 dépendance2"
* La nouvelle regex gère plusieurs cibles séparées par des espaces
*/
private static final Pattern TARGET_PATTERN = Pattern.compile("^([A-Za-z0-9_.\\-\\$\\(\\)\\{\\}]+(?:\\s+[A-Za-z0-9_.\\-\\$\\(\\)\\{\\}]+)*)\\s*:\\s*([^#]*?)\\s*(?:#.*)?$");
private static final Pattern TARGET_PATTERN = Pattern.compile("^([A-Za-z0-9_.\\/\\-\\$\\(\\)\\{\\}~]+(?:\\s+[A-Za-z0-9_.\\/\\-\\$\\(\\)\\{\\}~]+)*)\\s*:\\s*([^#]*?)\\s*(?:#.*)?$");
/**
* Regex pour détecter les lignes de commande associées à une target.