From eb8eea428d69ad0f5dcec37532aa02b8ec48a260 Mon Sep 17 00:00:00 2001 From: Louay DARDOURI Date: Thu, 6 Feb 2025 12:31:07 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20de=20la=20gestion=20des=20d?= =?UTF-8?q?=C3=A9pendances=20et=20ajout=20de=20la=20sortie=20des=20erreurs?= =?UTF-8?q?=20lors=20de=20l'ex=C3=A9cution=20des=20commandes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- bakefile.jar | Bin 10566 -> 11353 bytes src/fr/monlouyan/bakefile/BakefileParser.java | 8 ++++- .../monlouyan/bakefile/CommandExecutor.java | 33 ++++++++++++++++-- src/fr/monlouyan/bakefile/Rule.java | 3 +- tests/C/test-01-from-nothing/Bakefile | 7 ++-- tests/C/test-01-from-nothing/Makefile | 5 +++ tests/bakefile.jar | Bin 10566 -> 11353 bytes 7 files changed, 48 insertions(+), 8 deletions(-) create mode 100644 tests/C/test-01-from-nothing/Makefile diff --git a/bakefile.jar b/bakefile.jar index d445db8aec4dd896f5a6baf60d4a2d1872eef94e..589b110cf694a4c5aaf0f353d786469aa719d8ec 100644 GIT binary patch delta 6139 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 TgQD=G8d#x}rW)HV4Uh}~O~__- delta 5348 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 OP1V&=V>_-2k^um=wCUFX diff --git a/src/fr/monlouyan/bakefile/BakefileParser.java b/src/fr/monlouyan/bakefile/BakefileParser.java index 4bf89c2..61bf21d 100644 --- a/src/fr/monlouyan/bakefile/BakefileParser.java +++ b/src/fr/monlouyan/bakefile/BakefileParser.java @@ -80,7 +80,13 @@ public class BakefileParser { } currentTarget = targetMatcher.group(1); - dependencies = new ArrayList<>(Arrays.asList(targetMatcher.group(2).trim().split("\\s+"))); + String depStr = targetMatcher.group(2).trim(); + dependencies = depStr.isEmpty() ? new ArrayList<>() : new ArrayList<>(Arrays.asList(depStr.split("\\s+"))); + + if (currentTarget.equals("clean")) { + phonyTargets.add(currentTarget); + } + commands = new ArrayList<>(); } else if (commandMatcher.matches()) { commands.add(commandMatcher.group(1)); diff --git a/src/fr/monlouyan/bakefile/CommandExecutor.java b/src/fr/monlouyan/bakefile/CommandExecutor.java index 65b6645..d3ed16d 100644 --- a/src/fr/monlouyan/bakefile/CommandExecutor.java +++ b/src/fr/monlouyan/bakefile/CommandExecutor.java @@ -38,12 +38,39 @@ public class CommandExecutor { if (debug) System.out.println("Debug: Executing " + command); ProcessBuilder pb = new ProcessBuilder("sh", "-c", command); Process process = pb.start(); + + // Lire et afficher la sortie standard (stdout) + new Thread(() -> { + try (var reader = new java.io.BufferedReader(new java.io.InputStreamReader(process.getInputStream()))) { + String line; + while ((line = reader.readLine()) != null) { + System.out.println(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + }).start(); + + // Lire et afficher la sortie d'erreur (stderr) + new Thread(() -> { + try (var reader = new java.io.BufferedReader(new java.io.InputStreamReader(process.getErrorStream()))) { + String line; + while ((line = reader.readLine()) != null) { + System.err.println(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + }).start(); + + // Attendre la fin du processus int exitCode = process.waitFor(); - + if (exitCode != 0) { - System.err.println("Error executing " + rule.getName()); - System.exit(1); + System.err.println("bake: *** [" + rule.getName() + "] Error " + exitCode); + System.exit(exitCode); } + } catch (IOException | InterruptedException e) { e.printStackTrace(); System.exit(1); diff --git a/src/fr/monlouyan/bakefile/Rule.java b/src/fr/monlouyan/bakefile/Rule.java index 6fa61b6..0b1b01c 100644 --- a/src/fr/monlouyan/bakefile/Rule.java +++ b/src/fr/monlouyan/bakefile/Rule.java @@ -104,7 +104,8 @@ public class Rule { for (String dependency : dependencies) { File depFile = new File(dependency); - if (!depFile.exists()) { + + if (!depFile.exists() && !dependency.isEmpty()) { System.out.println("bake: *** No rule to make target '" + dependency + "', needed by '" + name + "'. Stop."); System.exit(1); } diff --git a/tests/C/test-01-from-nothing/Bakefile b/tests/C/test-01-from-nothing/Bakefile index 35bfebb..2d7c69f 100644 --- a/tests/C/test-01-from-nothing/Bakefile +++ b/tests/C/test-01-from-nothing/Bakefile @@ -1,4 +1,5 @@ -FLAGS = -ansi -pedabtic - main: main.c - gcc -o main main.c \ No newline at end of file + gcc -o main main.c + +clean: + rm main \ No newline at end of file diff --git a/tests/C/test-01-from-nothing/Makefile b/tests/C/test-01-from-nothing/Makefile new file mode 100644 index 0000000..4845081 --- /dev/null +++ b/tests/C/test-01-from-nothing/Makefile @@ -0,0 +1,5 @@ +main: main.c + gcc -o main main.c + +clean: + rm main \ No newline at end of file diff --git a/tests/bakefile.jar b/tests/bakefile.jar index d445db8aec4dd896f5a6baf60d4a2d1872eef94e..589b110cf694a4c5aaf0f353d786469aa719d8ec 100644 GIT binary patch delta 6139 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 TgQD=G8d#x}rW)HV4Uh}~O~__- delta 5348 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 OP1V&=V>_-2k^um=wCUFX