From 61c58d534188e822f23b9bc643b9424e8f4f4482 Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Sun, 13 Oct 2024 05:18:13 +0000 Subject: [PATCH] refactoring class Graph, updating project structure --- .../{#Ariandne.groovy# => Ariandne2.groovy} | 0 developer/{javac => deprecated}/Graph.java | 0 developer/{javac => deprecated}/Label.java | 0 developer/{javac => deprecated}/Token.java | 0 developer/javac/File.java | 73 ++++++ developer/javac/Graph.javax | 82 +++++++ developer/shell/build | 3 - developer/tool/clean | 19 -- developer/tool/clean_all | 23 -- developer/tool/clean_javac | 19 ++ developer/tool/clean_make | 27 +++ developer/tool/{clean_dist => clean_release} | 18 +- developer/tool/env | 45 ++-- developer/tool/make | 19 +- developer/tool/release | 25 +- document/directory_naming.html | 227 ++++++++++-------- {release_candidate => release}/.githolder | 0 {release_candidate => release}/black | 0 {release_candidate => release}/blue | 0 {release_candidate => release}/green | 0 tester/javac/TestBench.java | 29 +++ tester/tool/env | 32 +++ tester/tool/env_tester | 12 - tester/tool/{make.sh => make} | 8 +- tool/{env_administrator => env} | 10 +- tool/env_base | 23 -- tool/env_developer | 31 --- tool/env_tester | 26 -- tool_shared/bespoke/deprecate | 20 ++ tool_shared/bespoke/env | 46 ++++ tool_shared/bespoke/temp | 24 ++ tool_shared/bespoke/version | 6 +- tool_shared/bespoke/wipe_replease | 17 ++ 33 files changed, 571 insertions(+), 293 deletions(-) rename developer/deprecated/{#Ariandne.groovy# => Ariandne2.groovy} (100%) rename developer/{javac => deprecated}/Graph.java (100%) rename developer/{javac => deprecated}/Label.java (100%) rename developer/{javac => deprecated}/Token.java (100%) create mode 100644 developer/javac/File.java create mode 100644 developer/javac/Graph.javax delete mode 100755 developer/shell/build delete mode 100755 developer/tool/clean delete mode 100755 developer/tool/clean_all create mode 100755 developer/tool/clean_javac create mode 100755 developer/tool/clean_make rename developer/tool/{clean_dist => clean_release} (50%) rename {release_candidate => release}/.githolder (100%) rename {release_candidate => release}/black (100%) rename {release_candidate => release}/blue (100%) rename {release_candidate => release}/green (100%) create mode 100644 tester/javac/TestBench.java create mode 100644 tester/tool/env delete mode 100644 tester/tool/env_tester rename tester/tool/{make.sh => make} (50%) rename tool/{env_administrator => env} (71%) delete mode 100644 tool/env_base delete mode 100644 tool/env_developer delete mode 100644 tool/env_tester create mode 100755 tool_shared/bespoke/deprecate create mode 100644 tool_shared/bespoke/env create mode 100644 tool_shared/bespoke/temp create mode 100755 tool_shared/bespoke/wipe_replease diff --git a/developer/deprecated/#Ariandne.groovy# b/developer/deprecated/Ariandne2.groovy similarity index 100% rename from developer/deprecated/#Ariandne.groovy# rename to developer/deprecated/Ariandne2.groovy diff --git a/developer/javac/Graph.java b/developer/deprecated/Graph.java similarity index 100% rename from developer/javac/Graph.java rename to developer/deprecated/Graph.java diff --git a/developer/javac/Label.java b/developer/deprecated/Label.java similarity index 100% rename from developer/javac/Label.java rename to developer/deprecated/Label.java diff --git a/developer/javac/Token.java b/developer/deprecated/Token.java similarity index 100% rename from developer/javac/Token.java rename to developer/deprecated/Token.java diff --git a/developer/javac/File.java b/developer/javac/File.java new file mode 100644 index 0000000..d3cd0b4 --- /dev/null +++ b/developer/javac/File.java @@ -0,0 +1,73 @@ +package Ariadne; + +import java.io.*; +import java.nio.file.*; +import java.util.*; + +public class File { + static boolean debug = false; + + public static Map unpack_file_path(String file_fp) { + if (debug) System.out.println("unpack_file_path::file_fp: " + file_fp); + + // Use java.io.File explicitly to avoid conflict with the custom File class + java.io.File file = new java.io.File(file_fp); + String parent_dp = (file.getParent() != null) ? file.getParent() : ""; + + if (!parent_dp.isEmpty() && !parent_dp.endsWith(java.io.File.separator)) { + parent_dp += java.io.File.separator; + } + + String file_fn = file.getName(); + String file_fn_base = file_fn; + String file_fn_ext = ""; + + int last_index = file_fn.lastIndexOf('.'); + if (last_index > 0) { + file_fn_base = file_fn.substring(0, last_index); + if (last_index + 1 < file_fn.length()) { + file_fn_ext = file_fn.substring(last_index + 1); + } + } + + Map ret_val = new HashMap<>(); + ret_val.put("dp", parent_dp); + ret_val.put("fn", file_fn); + ret_val.put("fn_base", file_fn_base); + ret_val.put("fn_ext", file_fn_ext); + + if (debug) System.out.println("unpack_file_path::ret_val: " + ret_val); + + return ret_val; + } + + public static boolean file_exists_q(String fp_string) { + Path fp_object = Paths.get(fp_string); + return Files.exists(fp_object); + } + + /* + Given a target_fp and a list of list of dependency_fp. + + Returns false if either the target is newer than all the dependencies, or one + of the specified files is missing. Otherwise returns true. + */ + public static boolean newer_than_all(String target_fp_string, List dependency_fp_list) throws IOException { + Path target_fp_object = Paths.get(target_fp_string); + if (!Files.exists(target_fp_object)) return false; + + long target_last_modified_time = Files.getLastModifiedTime(target_fp_object).toMillis(); + + return dependency_fp_list.stream().allMatch(dependency_fp -> { + try { + Path dependency_fp_object = Paths.get(dependency_fp); + if (!Files.exists(dependency_fp_object)) return false; + long dependency_last_modified_time = Files.getLastModifiedTime(dependency_fp_object).toMillis(); + return target_last_modified_time > dependency_last_modified_time; + } catch (IOException e) { + return false; + } + }); + } + +} diff --git a/developer/javac/Graph.javax b/developer/javac/Graph.javax new file mode 100644 index 0000000..8da55d1 --- /dev/null +++ b/developer/javac/Graph.javax @@ -0,0 +1,82 @@ +package Ariadne; + +import java.util.HashMap; +import java.util.Map; + +public class Graph { + + /*-------------------------------------------------------------------------------- + type aliases + */ + public class TokenSet extends HashSet{} + public class LabelList extends ArrayList