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

41 lines
1.3 KiB
Java
Raw Normal View History

package fr.monlouyan.bakefile;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
public class BakefileParser {
private String filename;
public BakefileParser(String filename) {
this.filename = filename;
}
public List<Target> parse() {
List<Target> targets = new ArrayList<>();
2025-02-04 10:34:06 +01:00
if (!Files.exists(Paths.get(filename))) {
System.out.println("*** No targets specified and no makefile found. Stop.");
System.exit(1);
}
try {
List<String> lines = Files.readAllLines(Paths.get(filename));
for (String line : lines) {
if (line.contains(":")) {
String[] parts = line.split(":");
String name = parts[0].trim();
String[] deps = parts[1].trim().split(" ");
System.out.println("Target found: " + name + " with dependencies " + Arrays.toString(deps));
targets.add(new Target(name, Arrays.asList(deps), "gcc -o " + name + " " + name + ".c"));
}
}
} catch (IOException e) {
e.printStackTrace();
}
return targets;
2025-02-04 10:34:06 +01:00
}
}