diff options
| author | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
|---|---|---|
| committer | Martial Simon <msimon_fr@hotmail.com> | 2025-09-15 01:08:27 +0200 |
| commit | c9b6b9a5ca082fe7c1b6f58d7713f785a9eb6a5c (patch) | |
| tree | 3e4f42f93c7ae89a364e4d51fff6e5cec4e55fa9 /graphs/java/fgen/src/main | |
add: graphs et rushs
Diffstat (limited to 'graphs/java/fgen/src/main')
| -rw-r--r-- | graphs/java/fgen/src/main/java/fr/epita/assistants/fgen/FGen.java | 105 | ||||
| -rw-r--r-- | graphs/java/fgen/src/main/resources/example.txt | 3 |
2 files changed, 108 insertions, 0 deletions
diff --git a/graphs/java/fgen/src/main/java/fr/epita/assistants/fgen/FGen.java b/graphs/java/fgen/src/main/java/fr/epita/assistants/fgen/FGen.java new file mode 100644 index 0000000..5f5a470 --- /dev/null +++ b/graphs/java/fgen/src/main/java/fr/epita/assistants/fgen/FGen.java @@ -0,0 +1,105 @@ +package fr.epita.assistants.fgen; + +import java.io.*; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; +import java.util.Comparator; +import java.util.stream.Stream; + +public class FGen { + private Path cwd; + + public FGen(final String inputPath) { + this.cwd = Paths.get(new File("").getAbsolutePath()); + try (InputStream in = ClassLoader.getSystemResourceAsStream(inputPath)) { + BufferedReader br = new BufferedReader(new InputStreamReader(in)); + String line; + while ((line = br.readLine()) != null) { + execute(line); + } + } catch (IOException e) { + e.printStackTrace(); + } + } + + private void execute(String l) { + String[] args = l.split("\\s+"); + switch (args[0]) { + case "+": + create(args[1]); + break; + case "-": + delete(args[1]); + break; + case ">": + ceedee(args[1]); + break; + } + } + + private void create(String pathName) { + Path path = cwd.resolve(pathName); + File f = new File(String.valueOf(path)); + if (pathName.endsWith("/")) { + if (!f.exists()) { + if (!f.mkdirs()) + { + throw new RuntimeException("Could not create directories"); + } + } + } else { + if (!f.exists()) { + try { + if (pathName.contains("/")) + { + String tmp = cwd.toString() + "/" + pathName.substring(0, pathName.lastIndexOf('/')); + if (!new File(tmp).exists()) + { + if (!new File(tmp).mkdirs()) + throw new RuntimeException("create(file): Could not create dirs"); + } + } + + if (!f.createNewFile()) + throw new RuntimeException("Could not create file"); + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } + } + + private void ceedee(String pathName) { + Path res_path = cwd.resolve(pathName); + if (Files.exists(res_path) && Files.isDirectory(res_path)) { + cwd = res_path; + } + else throw new RuntimeException("Invalid path provided to cd"); + } + private boolean deleteDirectory (File file){ + File[] contents = file.listFiles(); + if (contents != null) { + for (File f : contents) { + deleteDirectory(f); + } + } + return file.delete(); + } + + private void delete(String pathString) { + Path path = cwd.resolve(pathString); + File file = new File(String.valueOf(path)); + if (Files.isDirectory(path)) { + if (!deleteDirectory(file)) + throw new RuntimeException("Unable to delete dir"); + } else { + try { + if (!Files.deleteIfExists(path)) + return; + } catch (IOException e) { + throw new RuntimeException(e); + } + } + } +}
\ No newline at end of file diff --git a/graphs/java/fgen/src/main/resources/example.txt b/graphs/java/fgen/src/main/resources/example.txt new file mode 100644 index 0000000..f864008 --- /dev/null +++ b/graphs/java/fgen/src/main/resources/example.txt @@ -0,0 +1,3 @@ ++ hello/dossier +> hello +- dossier
\ No newline at end of file |
