From: Thomas Walker Lynch Date: Sat, 5 Oct 2024 12:12:18 +0000 (+0000) Subject: test0 passes X-Git-Url: https://git.reasoningtechnology.com/style/static/gitweb.js?a=commitdiff_plain;h=44f50187c010c763b9e3d98368f38d762db5415e;p=Ariadne test0 passes --- diff --git a/developer/deprecated/dependency_graph_definition.groovy b/developer/deprecated/dependency_graph_definition.groovy index ec9028b..387283b 100644 --- a/developer/deprecated/dependency_graph_definition.groovy +++ b/developer/deprecated/dependency_graph_definition.groovy @@ -78,7 +78,7 @@ def dir_map = [ ,'JAVA_COMP_IN_SYN' : 'javac/synthesized/' ,'JAVA_COMP_OUT' : 'jvm/' ,'JVM_IN' : 'jvm/' - ,'TEMP' : 'Erebus/' + ,'TEMP' : 'scratch_pad/' ] env.CLASSPATH += ":${dir_map.JVM_IN}" diff --git a/developer/executor/env_build b/developer/executor/env_build index 2aba1ec..6c53847 100644 --- a/developer/executor/env_build +++ b/developer/executor/env_build @@ -2,11 +2,25 @@ # The build environment. # - -# Ensure the script is sourced rather than run directly +env_error=false if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then - echo "This script must be sourced, not executed. Exiting." + echo "env_build:: This script must be sourced, not executed." + env_error=true +fi +if [ -z "$ENV_DEV" ]; then + echo "env_build:: script can only be run from the developer environment" + env_error=true +fi +if [ "$env_error" = true ]; then return 1 fi -export ENV_BUILD_VERSION="0.1" +export JAVA_HOME="$REPO_HOME/tool/jdk-11" +export GROOVY_HOME="$REPO_HOME/tool/groovy-4.0.9" +export PATH=\ +:"$JAVA_HOME"/bin\ +:"$GROOVY_HOME"/bin\ +:"$PATH" + +export ENV_DEV_BUILD=true +echo "${BASH_SOURCE[0]}" "complete" diff --git a/developer/executor/make.sh b/developer/executor/make.sh index 8c10711..985c122 100755 --- a/developer/executor/make.sh +++ b/developer/executor/make.sh @@ -1,4 +1,9 @@ #!/bin/env bash +if [ -z "$ENV_DEV" ]; then + echo "make.sh:: script can only be run from in developer environment" + return 1 +fi + cd "$REPO_HOME"/developer/groovyc groovyc AriadneGraph.groovy diff --git a/developer/executor/release b/developer/executor/release index 4927353..c8ab7f4 100755 --- a/developer/executor/release +++ b/developer/executor/release @@ -2,36 +2,43 @@ // Access the environment variable REPO_HOME def repo_home = System.getenv('REPO_HOME') -if (!repo_home) { - println "Error: REPO_HOME is not set." - System.exit(1) +def env_dev_build = System.getenv('ENV_DEV_BUILD') +def arg_error = false; +if(!repo_home){ + println "release:: REPO_HOME is not set." + arg_error = true +} +if(!env_dev_build){ + println "release:: ENV_BUILD_VERSION is not set." + arg_error = true +} +if(arg_error){ + System.exit(1) } -def version = "0.1" - -def release_dir = "${repo_home}/user/Ariadne_${version}" +def release_dir = "${repo_home}/release_candidate" def release_dir_file = new File(release_dir) -if (!release_dir_file.exists()) { - release_dir_file.mkdirs() +if (!release_dir_file.exists()){ + release_dir_file.mkdirs() } // Function to use 'install' command for copying and setting permissions -def install_file(source_fp, target_dp, perms) { - def target_file = "${target_dp}/${new File(source_fp).name}" - def cmd = ["install", "-m", perms, source_fp, target_file] - def process = cmd.execute() - process.waitFor() - if (process.exitValue() != 0) { - println "Error: Failed to install ${new File(source_fp).name} to ${target_dp}" - println process.err.text - System.exit(1) - } - println "Installed ${new File(source_fp).name} to ${target_dp} with permissions ${perms}" +def install_file(source_fp, target_dp, perms){ + def target_file = "${target_dp}/${new File(source_fp).name}" + def cmd = ["install", "-m", perms, source_fp, target_file] + def process = cmd.execute() + process.waitFor() + if( process.exitValue() != 0 ){ + println "Error: Failed to install ${new File(source_fp).name} to ${target_dp}" + println process.err.text + System.exit(1) + } + println "Installed ${new File(source_fp).name} to ${target_dp} with permissions ${perms}" } def build_fp = "${repo_home}/developer/groovy/build" def ariadne_class_files = new File("${repo_home}/developer/groovyc").listFiles().findAll { - it.name.startsWith("AriadneGraph") && it.name.endsWith(".class") + it.name.startsWith("AriadneGraph") && it.name.endsWith(".class") } // Install the build script @@ -39,7 +46,6 @@ install_file(build_fp, release_dir, "ug+r,ug+x") // Install all matching class files ariadne_class_files.each { class_file -> - install_file(class_file.absolutePath, release_dir, "ug+r") + install_file(class_file.absolutePath, release_dir, "ug+r") } -println "Release version ${version} completed at $release_dir" diff --git a/developer/executor/version b/developer/executor/version index 6e696ef..12f7625 100755 --- a/developer/executor/version +++ b/developer/executor/version @@ -1,4 +1,4 @@ #!/bin/env bash -echo 0.1 - +# get this from the project management level exector directory +"$REPO_HOME"/executor/version \ No newline at end of file diff --git a/developer/groovy/build b/developer/groovy/build index 0e18b80..1acf09b 100755 --- a/developer/groovy/build +++ b/developer/groovy/build @@ -1,47 +1,43 @@ #!/usr/bin/env groovy // Function to load the graph class dynamically -def include_graph_class( graph_class_fp ) { - def class_loader = this.class.classLoader - try { - def graph_class = class_loader.loadClass(graph_class_fp) - println "Successfully loaded class: ${graph_class}" - return graph_class.newInstance() - } catch (Exception e) { - println "Error loading class: ${e.message}" - e.printStackTrace() - System.exit(1) - } +def include_a_class( a_class_fp ){ + def class_loader = this.class.classLoader + try{ + return class_loader.loadClass(a_class_fp) + } catch(Exception e){ + return null + } } // Main build function for the Shell UI -def build( graph_class_fp ) { - // Load the graph class dynamically - def graph_class = include_graph_class( graph_class_fp ) +def build(graph_definition_fp){ + // Load the graph class dynamically + def graph_definition_class = include_a_class(graph_definition_fp) + if(graph_definition_class){ + println "build:: loaded ${graph_definition_fp}.class" + } else{ + println "build:: failed to load ${graph_definition_fp}.class" + System.exit(1) + } - // Get the node_map and node_f_list from the graph class - def node_map = graph_class.get_node_map() - def node_f_list = graph_class.get_node_f_list() + // Get the node_map and node_f_list from the graph class + def node_map = graph_definition_class.get_node_map() + def node_f_list = graph_definition_class.get_node_f_list() + // println "node_map: ${node_map}" + // println "node_f_list: ${node_f_list}" - // Log the result - println "node_map: ${node_map}" - println "node_f_list: ${node_f_list}" + graph = new AriadneGraph(node_map ,node_f_list) - // Check if node_map and node_f_list are defined - if( !(node_map instanceof Map) || !(node_f_list instanceof List) ){ - println "Error: Graph definition must define both 'node_map' and 'node_f_list'" - System.exit(1) - } - - // Call the build function in AriadneGraph - AriadneGraph.run_build_scripts_f( node_map ,node_f_list ) + // Call the build function in AriadneGraph + // AriadneGraph.run_build_scripts_f(node_map ,node_f_list) } // Entry point for the script -if( args.length == 0 ){ - println "Usage: ./build " - System.exit(1) +if(args.length == 0){ + println "Usage: ./build " + System.exit(1) } -def graph_class_fp = args[0] -build( graph_class_fp ) +def graph_definition_fp = args[0] +build( graph_definition_fp ) diff --git a/developer/groovyc/AriadneGraph$_all_DAG_DF_closure7.class b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure7.class new file mode 100644 index 0000000..4231e36 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure7.class differ diff --git a/developer/groovyc/AriadneGraph$_all_DAG_DF_closure8.class b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure8.class new file mode 100644 index 0000000..a0125cf Binary files /dev/null and b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure8.class differ diff --git a/developer/groovyc/AriadneGraph$_all_DAG_DF_closure9.class b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure9.class new file mode 100644 index 0000000..799d4d7 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_all_DAG_DF_closure9.class differ diff --git a/developer/groovyc/AriadneGraph$_good_dependency_q_closure10.class b/developer/groovyc/AriadneGraph$_good_dependency_q_closure10.class new file mode 100644 index 0000000..e02400f Binary files /dev/null and b/developer/groovyc/AriadneGraph$_good_dependency_q_closure10.class differ diff --git a/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class b/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class new file mode 100644 index 0000000..1df2a60 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class differ diff --git a/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3.class b/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3.class new file mode 100644 index 0000000..0740586 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_mark_the_wellformed_f_closure3.class differ diff --git a/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure4.class b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure4.class new file mode 100644 index 0000000..761a9b6 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure4.class differ diff --git a/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure5.class b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure5.class new file mode 100644 index 0000000..0ee5256 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure5.class differ diff --git a/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure6.class b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure6.class new file mode 100644 index 0000000..408e316 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_markup_graph_f_descend_closure6.class differ diff --git a/developer/groovyc/AriadneGraph$_newer_than_all_closure11.class b/developer/groovyc/AriadneGraph$_newer_than_all_closure11.class new file mode 100644 index 0000000..97d5002 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_newer_than_all_closure11.class differ diff --git a/developer/groovyc/AriadneGraph$_run_build_scripts_f_closure12.class b/developer/groovyc/AriadneGraph$_run_build_scripts_f_closure12.class new file mode 100644 index 0000000..6129294 Binary files /dev/null and b/developer/groovyc/AriadneGraph$_run_build_scripts_f_closure12.class differ diff --git a/developer/groovyc/AriadneGraph$_wellformed_q_closure1.class b/developer/groovyc/AriadneGraph$_wellformed_q_closure1.class index 1ec0322..202eee3 100644 Binary files a/developer/groovyc/AriadneGraph$_wellformed_q_closure1.class and b/developer/groovyc/AriadneGraph$_wellformed_q_closure1.class differ diff --git a/developer/groovyc/AriadneGraph$_wellformed_q_closure2.class b/developer/groovyc/AriadneGraph$_wellformed_q_closure2.class index b12ef7d..3dc9e6d 100644 Binary files a/developer/groovyc/AriadneGraph$_wellformed_q_closure2.class and b/developer/groovyc/AriadneGraph$_wellformed_q_closure2.class differ diff --git a/developer/groovyc/AriadneGraph.class b/developer/groovyc/AriadneGraph.class index d0de08e..1b538ca 100644 Binary files a/developer/groovyc/AriadneGraph.class and b/developer/groovyc/AriadneGraph.class differ diff --git a/developer/groovyc/AriadneGraph.groovy b/developer/groovyc/AriadneGraph.groovy index 29d7502..b65c1bc 100644 --- a/developer/groovyc/AriadneGraph.groovy +++ b/developer/groovyc/AriadneGraph.groovy @@ -8,7 +8,15 @@ class AriadneGraph { List node_f_list = [] // Constructor to accept a graph definition (node_map and node_f_list) - AriadneGraph( Map node_map ,List node_f_list ){ + AriadneGraph(Map node_map ,List node_f_list){ + def accept_arg_list = true; + if( !(node_map === null) && !(node_map instanceof Map) ) accept_arg_list = false + if( !(node_f_list === null) && !(node_f_list instanceof List) ) accept_arg_list = false + if(node_map === null && node_f_list === null) accept_arg_list = false + if(!accept_arg_list){ + println "AriandreGraph: requiers one or both of 'node_map' as Map, and 'node_f_list as List.'" + System.exit(1) + } this.node_map = node_map ?: [:] this.node_f_list = node_f_list ?: [] } @@ -231,9 +239,10 @@ class AriadneGraph { def wellformed_graph_q(root_node_labels ,boolean verbose = true){ def ret_value = [] as Set def exists_malformed = false; + def result // used variously // check the root nodes - def result = mark_the_wellformed_f(root_node_labels ,verbose) + result = mark_the_wellformed_f(root_node_labels ,verbose) if(result == 'exists_malformed'){ ret_value << 'exists_malformed' } @@ -245,7 +254,7 @@ class AriadneGraph { // iterate over left side tree descent ,not ideal as it starts at the // root each time ,but avoids complexity in the cycle detection logic. do{ - def result = markup_graph_f_descend(path_stack ,verbose) + result = markup_graph_f_descend(path_stack ,verbose) if('cycle_found' in result) ret_value << 'cycle_exists' if('exists_malformed' in result) exists_malformed = true; diff --git a/document/work_flow.txt b/document/work_flow.txt new file mode 100644 index 0000000..81257f8 --- /dev/null +++ b/document/work_flow.txt @@ -0,0 +1,29 @@ + +Work Flow + +1. Development + + 1.1. developer makes edits + 1.2. developer uses 'release' which will copy relevant files to the $REPO_HOME/release_candidate + 1.3. tester will test the candidate + +2. Release + + 2.1. Upon completion of testing, project manager will make a new branch for release + named release_. Version has a major and minor number. + +2.2. on the new branch the 'release_candidate' directory is renamed 'release_'. + +3. Release specific fixes + + 3.1.the 'release_candidate' directory is recreated + 3.2 steps 1.1 - 1.33 are repeated + 3.3 when testing is complete, 'release_candidate' is renamed 'release_version' + with the minor version incremented. + +4. Major release + + Development continues on the `core_developer_branch` even after creation of a + `release_version` branch. For a next major release, increment the major release + number and do as described in steps 2 then 3. + diff --git a/executor/env_base b/executor/env_base index 1e3b12e..d150193 100644 --- a/executor/env_base +++ b/executor/env_base @@ -19,3 +19,5 @@ PPS2=">> " echo REPO_HOME "$REPO_HOME" echo PROJECT "$PROJECT" echo "${BASH_SOURCE[0]}" "complete" + +export ENV_BASE=true diff --git a/executor/env_dev b/executor/env_dev index 0bba479..cd66ee7 100644 --- a/executor/env_dev +++ b/executor/env_dev @@ -6,19 +6,13 @@ if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then return 1 fi -# Check if REPO_HOME is set, if not source env_base -if [ -z "$REPO_HOME" ]; then +if [ -z "$ENV_BASE" ]; then script_path="$(dirname "$(realpath "${BASH_SOURCE[0]}")")" source "${script_path}/env_base" fi -export JAVA_HOME="$REPO_HOME/tool/jdk-11" -export GROOVY_HOME="$REPO_HOME/tool/groovy-4.0.9" - export PATH=\ "$REPO_HOME"/developer/executor\ -:"$JAVA_HOME"/bin\ -:"$GROOVY_HOME"/bin\ :"$PATH" # so the .gitignore files can be seen: @@ -27,6 +21,9 @@ alias ls="ls -a" # Corrected line: cd "$REPO_HOME/developer" +export ENV_DEV=true source "$REPO_HOME"/developer/executor/env_build - echo "${BASH_SOURCE[0]}" "complete" + + + diff --git a/executor/env_pm b/executor/env_pm index 6efd4fc..5f614d1 100644 --- a/executor/env_pm +++ b/executor/env_pm @@ -6,12 +6,13 @@ if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then return 1 fi -# Check if REPO_HOME is set, if not source env_base -if [ -z "$REPO_HOME" ]; then +if [ -z "$ENV_BASE" ]; then script_path="$(dirname "$(realpath "${BASH_SOURCE[0]}")")" source "${script_path}/env_base" fi +ENV_PM=true + PROJECT="$PROJECT"_PM export PATH=\ @@ -21,4 +22,6 @@ export PATH=\ # no sneaky hidden files alias ls="ls -a" + +export ENV_PM=true echo "${BASH_SOURCE[0]}" "complete" diff --git a/executor/env_tester b/executor/env_tester index 809f8e3..51b8e51 100644 --- a/executor/env_tester +++ b/executor/env_tester @@ -7,7 +7,7 @@ if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then fi # Check if REPO_HOME is set, if not source env_base -if [ -z "$REPO_HOME" ]; then +if [ -z "$ENV_BASE" ]; then script_path="$(dirname "$(realpath "${BASH_SOURCE[0]}")")" source "${script_path}/env_base" fi @@ -19,6 +19,8 @@ export PATH=\ :"$PATH" cd "$REPO_HOME"/tester -source executor/env_test + +export ENV_TESTER=true +source executor/env_tester echo "${BASH_SOURCE[0]}" "complete" diff --git a/executor/version b/executor/version new file mode 100755 index 0000000..6e696ef --- /dev/null +++ b/executor/version @@ -0,0 +1,4 @@ +#!/bin/env bash + +echo 0.1 + diff --git a/release_candidate/.githolder b/release_candidate/.githolder new file mode 100644 index 0000000..e69de29 diff --git a/release_candidate/AriadneGraph$_all_DAG_DF_closure7.class b/release_candidate/AriadneGraph$_all_DAG_DF_closure7.class new file mode 100644 index 0000000..4231e36 Binary files /dev/null and b/release_candidate/AriadneGraph$_all_DAG_DF_closure7.class differ diff --git a/release_candidate/AriadneGraph$_all_DAG_DF_closure8.class b/release_candidate/AriadneGraph$_all_DAG_DF_closure8.class new file mode 100644 index 0000000..a0125cf Binary files /dev/null and b/release_candidate/AriadneGraph$_all_DAG_DF_closure8.class differ diff --git a/release_candidate/AriadneGraph$_all_DAG_DF_closure9.class b/release_candidate/AriadneGraph$_all_DAG_DF_closure9.class new file mode 100644 index 0000000..799d4d7 Binary files /dev/null and b/release_candidate/AriadneGraph$_all_DAG_DF_closure9.class differ diff --git a/release_candidate/AriadneGraph$_good_dependency_q_closure10.class b/release_candidate/AriadneGraph$_good_dependency_q_closure10.class new file mode 100644 index 0000000..e02400f Binary files /dev/null and b/release_candidate/AriadneGraph$_good_dependency_q_closure10.class differ diff --git a/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class b/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class new file mode 100644 index 0000000..1df2a60 Binary files /dev/null and b/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class differ diff --git a/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3.class b/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3.class new file mode 100644 index 0000000..0740586 Binary files /dev/null and b/release_candidate/AriadneGraph$_mark_the_wellformed_f_closure3.class differ diff --git a/release_candidate/AriadneGraph$_markup_graph_f_descend_closure4.class b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure4.class new file mode 100644 index 0000000..761a9b6 Binary files /dev/null and b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure4.class differ diff --git a/release_candidate/AriadneGraph$_markup_graph_f_descend_closure5.class b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure5.class new file mode 100644 index 0000000..0ee5256 Binary files /dev/null and b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure5.class differ diff --git a/release_candidate/AriadneGraph$_markup_graph_f_descend_closure6.class b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure6.class new file mode 100644 index 0000000..408e316 Binary files /dev/null and b/release_candidate/AriadneGraph$_markup_graph_f_descend_closure6.class differ diff --git a/release_candidate/AriadneGraph$_newer_than_all_closure11.class b/release_candidate/AriadneGraph$_newer_than_all_closure11.class new file mode 100644 index 0000000..97d5002 Binary files /dev/null and b/release_candidate/AriadneGraph$_newer_than_all_closure11.class differ diff --git a/release_candidate/AriadneGraph$_run_build_scripts_f_closure12.class b/release_candidate/AriadneGraph$_run_build_scripts_f_closure12.class new file mode 100644 index 0000000..6129294 Binary files /dev/null and b/release_candidate/AriadneGraph$_run_build_scripts_f_closure12.class differ diff --git a/release_candidate/AriadneGraph$_run_build_scripts_f_closure3.class b/release_candidate/AriadneGraph$_run_build_scripts_f_closure3.class new file mode 100644 index 0000000..7cea6d1 Binary files /dev/null and b/release_candidate/AriadneGraph$_run_build_scripts_f_closure3.class differ diff --git a/release_candidate/AriadneGraph$_wellformed_q_closure1.class b/release_candidate/AriadneGraph$_wellformed_q_closure1.class new file mode 100644 index 0000000..202eee3 Binary files /dev/null and b/release_candidate/AriadneGraph$_wellformed_q_closure1.class differ diff --git a/release_candidate/AriadneGraph$_wellformed_q_closure2.class b/release_candidate/AriadneGraph$_wellformed_q_closure2.class new file mode 100644 index 0000000..3dc9e6d Binary files /dev/null and b/release_candidate/AriadneGraph$_wellformed_q_closure2.class differ diff --git a/release_candidate/AriadneGraph.class b/release_candidate/AriadneGraph.class new file mode 100644 index 0000000..1b538ca Binary files /dev/null and b/release_candidate/AriadneGraph.class differ diff --git a/release_candidate/build b/release_candidate/build new file mode 100755 index 0000000..1acf09b --- /dev/null +++ b/release_candidate/build @@ -0,0 +1,43 @@ +#!/usr/bin/env groovy + +// Function to load the graph class dynamically +def include_a_class( a_class_fp ){ + def class_loader = this.class.classLoader + try{ + return class_loader.loadClass(a_class_fp) + } catch(Exception e){ + return null + } +} + +// Main build function for the Shell UI +def build(graph_definition_fp){ + // Load the graph class dynamically + def graph_definition_class = include_a_class(graph_definition_fp) + if(graph_definition_class){ + println "build:: loaded ${graph_definition_fp}.class" + } else{ + println "build:: failed to load ${graph_definition_fp}.class" + System.exit(1) + } + + // Get the node_map and node_f_list from the graph class + def node_map = graph_definition_class.get_node_map() + def node_f_list = graph_definition_class.get_node_f_list() + // println "node_map: ${node_map}" + // println "node_f_list: ${node_f_list}" + + graph = new AriadneGraph(node_map ,node_f_list) + + // Call the build function in AriadneGraph + // AriadneGraph.run_build_scripts_f(node_map ,node_f_list) +} + +// Entry point for the script +if(args.length == 0){ + println "Usage: ./build " + System.exit(1) +} + +def graph_definition_fp = args[0] +build( graph_definition_fp ) diff --git a/tester/executor/#make.sh# b/tester/executor/#make.sh# new file mode 100755 index 0000000..d11729a --- /dev/null +++ b/tester/executor/#make.sh# @@ -0,0 +1,10 @@ +#!/bin/env bash + +# Ensure the script is sourced +if [ -z "$ENV_TESTER" ]; then + echo "env_build:: script can only be run in the tester environment" + return 1 +fi + +cd "$REPO_HOME"/tester/test0 +groovyc TestGraph.groovy diff --git a/tester/executor/env_test b/tester/executor/env_test deleted file mode 100644 index d248665..0000000 --- a/tester/executor/env_test +++ /dev/null @@ -1,3 +0,0 @@ -#!/usr/bin/env bash -# environment common to all tests -# each test directory also has an environment \ No newline at end of file diff --git a/tester/executor/env_tester b/tester/executor/env_tester new file mode 100644 index 0000000..eb6b6c7 --- /dev/null +++ b/tester/executor/env_tester @@ -0,0 +1,12 @@ +#!/usr/bin/env bash +# environment common to all tests +# each test directory also has an environment + +export JAVA_HOME="$REPO_HOME/tool/jdk-11" +export GROOVY_HOME="$REPO_HOME/tool/groovy-4.0.9" + +export PATH=\ +"$REPO_HOME"/release_candidate\ +:"$JAVA_HOME"/bin\ +:"$GROOVY_HOME"/bin\ +:"$PATH" diff --git a/tester/executor/make.sh b/tester/executor/make.sh new file mode 100755 index 0000000..c5d47ac --- /dev/null +++ b/tester/executor/make.sh @@ -0,0 +1,9 @@ +#!/bin/env bash + +if [ -z "$ENV_TESTER" ]; then + echo "make.sh:: script can only be run in the tester environment" + env_error=true +fi + +cd "$REPO_HOME"/tester/test0 +groovyc TestGraph.groovy diff --git a/tester/test0/env_test0 b/tester/test0/env_test0 index 39a390c..31113a7 100644 --- a/tester/test0/env_test0 +++ b/tester/test0/env_test0 @@ -1,13 +1,11 @@ - -export JAVA_HOME="$REPO_HOME/tool/jdk-11" -export GROOVY_HOME="$REPO_HOME/tool/groovy-4.0.9" - -export PATH=\ -"$REPO_HOME"/user/Ariadne_0.1\ -:"$JAVA_HOME"/bin\ -:"$GROOVY_HOME"/bin\ -:"$PATH" - -export CLASSPATH="$REPO_HOME"/user/Ariadne_0.1:"$REPO_HOME"/tester/test0:$CLASSPATH +if [ -z "$ENV_TESTER" ]; then + echo "env_test0:: script can only be run in the tester environment" + env_error=true +fi + +export CLASSPATH=\ +"$REPO_HOME"/release_candidate\ +:"$REPO_HOME"/tester/test0\ +:$CLASSPATH diff --git a/tester/test0/make.sh b/tester/test0/make.sh deleted file mode 100755 index 0ed1e95..0000000 --- a/tester/test0/make.sh +++ /dev/null @@ -1,3 +0,0 @@ -#!/bin/env bash - -groovyc TestGraph.groovy \ No newline at end of file diff --git a/tester/test0/test0.sh b/tester/test0/test0.sh new file mode 100755 index 0000000..8e43b74 --- /dev/null +++ b/tester/test0/test0.sh @@ -0,0 +1,8 @@ +#!/bin/env bash + +# smoke test, and yes, there was a lot of smoke + +source env_test0 +build TestGraph +echo "test0 complete" + diff --git a/tester/test0/transcript-tester.txt b/tester/test0/transcript-tester.txt new file mode 100644 index 0000000..08d1f15 --- /dev/null +++ b/tester/test0/transcript-tester.txt @@ -0,0 +1,29 @@ +2024-10-05T12:09:05Z[] +Thomas-developer@Blossac§/var/user_data/Thomas-developer§ +> cd Ariadne + +2024-10-05T12:09:24Z[] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne§ +> source executor/env_tester +REPO_HOME /var/user_data/Thomas-developer/Ariadne +PROJECT Ariadne +/var/user_data/Thomas-developer/Ariadne/executor/env_base complete +executor/env_tester complete + +2024-10-05T12:09:33Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester§ +> cd test0 + +2024-10-05T12:09:38Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester/test0§ +> make.sh + +2024-10-05T12:09:42Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester/test0§ +> ./test0.sh +build:: loaded TestGraph.class +test0 complete + +2024-10-05T12:09:51Z[Ariadne_TESTER] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/tester/test0§ +> diff --git a/tester/test0/transcript_dev.txt b/tester/test0/transcript_dev.txt new file mode 100644 index 0000000..838cae8 --- /dev/null +++ b/tester/test0/transcript_dev.txt @@ -0,0 +1,36 @@ +2024-10-05T12:07:43Z[] +Thomas-developer@Blossac§/var/user_data/Thomas-developer§ +> repo Ariadne +REPO_HOME /var/user_data/Thomas-developer/Ariadne +PROJECT Ariadne +/var/user_data/Thomas-developer/Ariadne/executor/env_base complete +/var/user_data/Thomas-developer/Ariadne/developer/executor/env_build complete +/var/user_data/Thomas-developer/Ariadne/executor/env_dev complete + +2024-10-05T12:07:51Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> make.sh + +2024-10-05T12:08:11Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> release +Installed build to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r,ug+x +Installed AriadneGraph.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_wellformed_q_closure1.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_wellformed_q_closure2.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_run_build_scripts_f_closure3.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_mark_the_wellformed_f_closure3.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_mark_the_wellformed_f_closure3$_closure13.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_markup_graph_f_descend_closure4.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_markup_graph_f_descend_closure5.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_markup_graph_f_descend_closure6.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_all_DAG_DF_closure7.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_all_DAG_DF_closure8.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_all_DAG_DF_closure9.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_good_dependency_q_closure10.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_newer_than_all_closure11.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r +Installed AriadneGraph$_run_build_scripts_f_closure12.class to /var/user_data/Thomas-developer/Ariadne/release_candidate with permissions ug+r + +2024-10-05T12:08:18Z[Ariadne] +Thomas-developer@Blossac§/var/user_data/Thomas-developer/Ariadne/developer§ +> diff --git a/user/.githolder b/user/.githolder deleted file mode 100644 index e69de29..0000000 diff --git a/user/Ariadne_0.1/AriadneGraph$_run_build_scripts_f_closure3.class b/user/Ariadne_0.1/AriadneGraph$_run_build_scripts_f_closure3.class deleted file mode 100644 index 7cea6d1..0000000 Binary files a/user/Ariadne_0.1/AriadneGraph$_run_build_scripts_f_closure3.class and /dev/null differ diff --git a/user/Ariadne_0.1/AriadneGraph$_wellformed_q_closure1.class b/user/Ariadne_0.1/AriadneGraph$_wellformed_q_closure1.class deleted file mode 100644 index 1ec0322..0000000 Binary files a/user/Ariadne_0.1/AriadneGraph$_wellformed_q_closure1.class and /dev/null differ diff --git a/user/Ariadne_0.1/AriadneGraph$_wellformed_q_closure2.class b/user/Ariadne_0.1/AriadneGraph$_wellformed_q_closure2.class deleted file mode 100644 index b12ef7d..0000000 Binary files a/user/Ariadne_0.1/AriadneGraph$_wellformed_q_closure2.class and /dev/null differ diff --git a/user/Ariadne_0.1/AriadneGraph.class b/user/Ariadne_0.1/AriadneGraph.class deleted file mode 100644 index d0de08e..0000000 Binary files a/user/Ariadne_0.1/AriadneGraph.class and /dev/null differ diff --git a/user/Ariadne_0.1/AriadneGraph.groovy b/user/Ariadne_0.1/AriadneGraph.groovy deleted file mode 100644 index 2d56313..0000000 --- a/user/Ariadne_0.1/AriadneGraph.groovy +++ /dev/null @@ -1,178 +0,0 @@ -class AriadneGraph { - - // Instance variables for graph data if needed - Map node_map = [:] - List node_f_list = [] - - // Constructor to accept a graph definition (node_map and node_f_list) - AriadneGraph( Map node_map ,List node_f_list ){ - this.node_map = node_map ?: [:] - this.node_f_list = node_f_list ?: [] - } - - /*-------------------------------------------------------------------------------- - File utility functions - */ - - static Map unpack_file_path( String file_fp ){ - def file = new File( file_fp ) - - def parent_dp = file.getParent() - def file_fn = file.getName() - def file_fn_base = file_fn.lastIndexOf('.') > 0 ? file_fn[ 0..file_fn.lastIndexOf('.') - 1 ] : file_fn - def file_fn_ext = file_fn.lastIndexOf('.') > 0 ? file_fn[ file_fn.lastIndexOf('.') + 1..-1 ] : '' - - return [ - parent_dp: parent_dp - ,file_fn: file_fn - ,file_fn_base: file_fn_base - ,file_fn_ext: file_fn_ext - ] - } - - static boolean file_exists_q( String node_label ){ - def node_path = Paths.get( node_label ) - return Files.exists( node_path ) - } - - /*-------------------------------------------------------------------------------- - Node type checks and marking - */ - - static Set all_node_type_set = ['symbol' ,'path' ,'leaf' ,'generator'] as Set - static Set persistent_node_mark_set = ['cycle_member' ,'wellformed' ,'build_failed'] as Set - - static boolean leaf_q( Map node ){ - return node && node.type == 'leaf' - } - - static boolean has_mark( Map node ){ - return node?.mark?.isNotEmpty() - } - - static void set_mark( Map node ,String mark ){ - node.mark = node.mark ?: [] as Set - node.mark << mark - } - - static void clear_mark( Map node ,String mark ){ - node?.mark?.remove( mark ) - } - - static boolean marked_good_q( Map node ){ - return node && node.mark && ( 'wellformed' in node.mark ) && !( 'cycle_member' in node.mark ) && !( 'build_failed' in node.mark ) - } - - /*-------------------------------------------------------------------------------- - Well-formed Node Check - */ - - static Set all_form_error_set = [ - 'no_node' - ,'node_must_have_label' - ,'label_must_be_string' - ,'node_must_have_type' - ,'bad_node_type' - ,'neighbor_value_must_be_list' - ,'neighbor_reference_must_be_string' - ,'mark_property_value_must_be_set' - ,'unregistered_mark' - ,'missing_required_build_code' - ,'leaf_given_neighbor_property' - ,'leaf_given_build_property' - ] as Set - - static Set wellformed_q( Map node ){ - def form_error_set = [] as Set - - if( !node ){ - form_error_set << 'no_node' - return form_error_set - } - - if( !node.label ) - form_error_set << 'node_must_have_label' - else if( !( node.label instanceof String ) ) - form_error_set << 'label_must_be_string' - - if( !node.type ) - form_error_set << 'node_must_have_type' - else if( !( node.type instanceof String ) || !( node.type in all_node_type_set ) ) - form_error_set << 'bad_node_type' - - if( node.neighbor ){ - if( !( node.neighbor instanceof List ) ) - form_error_set << 'neighbor_value_must_be_list' - else if( !( node.neighbor.every { it instanceof String } ) ) - form_error_set << 'neighbor_reference_must_be_string' - } - - if( node.mark ){ - if( !( node.mark instanceof Set ) ) - form_error_set << 'mark_property_value_must_be_set' - else if( !( node.mark.every { it in persistent_node_mark_set } ) ) - form_error_set << 'unregistered_mark' - } - - if( node.type == 'path' && ( !node.build || !( node.build instanceof Closure ) ) ) - form_error_set << 'missing_required_build_code' - - if( node.type == 'leaf' ){ - if( node.neighbor ) form_error_set << 'leaf_given_neighbor_property' - if( node.build ) form_error_set << 'leaf_given_build_property' - } - - return form_error_set - } - - /*-------------------------------------------------------------------------------- - Graph traversal and build functions - */ - - def lookup( String node_label ,boolean verbose = false ){ - def lookup_node = node_map[ node_label ] - if( !lookup_node ){ - def match_result - for( func in node_f_list ){ - match_result = func( node_label ) - if( match_result.status == "matched" ){ - lookup_node = match_result - break - } - } - } - - if( !lookup_node && verbose ) println "lookup:: Node ${node_label} could not be found." - return lookup_node - } - - def run_build_scripts_f( List root_node_labels ,boolean verbose = true ){ - if( root_node_labels.isEmpty() ) return - - def node_function = { node ,error_token_set -> - - if( !can_be_built_q( node ) ){ - println( "Skipping build for ${node.label} due to dependency problems" ) - return - } - if( !should_be_built_q( node ) ){ - if( verbose ) println( "${node.label} already up to date" ) - return - } - - println( "Running build script for ${node.label}" ) - node.build( node ,node.neighbor ) - - if( should_be_built_q( node ) ){ - println( "Build failed for ${node.label}" ) - set_mark( node ,'build_failed' ) - } - } - - println( "run_build_scripts_f:: running ..." ) - all_DAG_DF( root_node_labels ,node_function ,verbose ) - } - - // Add the rest of your methods here as instance/static methods based on whether they depend on the graph instance - -} diff --git a/user/Ariadne_0.1/build b/user/Ariadne_0.1/build deleted file mode 100755 index 9e6339b..0000000 --- a/user/Ariadne_0.1/build +++ /dev/null @@ -1,48 +0,0 @@ -#!/usr/bin/env groovy - -// Function to load the graph class dynamically -def include_graph_class( graph_class_fp ) { - def class_loader = this.class.classLoader - try { - def graph_class = class_loader.loadClass(graph_class_fp) - println "Successfully loaded class: ${graph_class}" - return graph_class.newInstance() - } catch (Exception e) { - println "Error loading class: ${e.message}" - e.printStackTrace() - System.exit(1) - } -} - -// Main build function for the Shell UI -def build( graph_class_fp ) { - // Load the graph class dynamically - def graph_class = include_graph_class( graph_class_fp ) - - // Get the node_map and node_f_list from the graph class - def node_map = graph_class.get_node_map() - def node_f_list = graph_class.get_node_f_list() - - // Log the result - println "node_map: ${node_map}" - println "node_f_list: ${node_f_list}" - - // Check if node_map and node_f_list are defined - if( !(node_map instanceof Map) || !(node_f_list instanceof List) ){ - println "Error: Graph definition must define both 'node_map' and 'node_f_list'" - System.exit(1) - } - - - // Call the build function in AriadneGraph - AriadneGraph.run_build_scripts_f( node_map ,node_f_list ) -} - -// Entry point for the script -if( args.length == 0 ){ - println "Usage: ./build " - System.exit(1) -} - -def graph_class_fp = args[0] -build( graph_class_fp )