From e005120822450b84a9b75b3c72a4ebd859a6f22a Mon Sep 17 00:00:00 2001 From: Thomas Walker Lynch Date: Tue, 7 Jan 2025 05:04:50 +0000 Subject: [PATCH] turns off bash literal file globs for developer scripts --- developer/bash/Build | 2 ++ .../Step_Right_Machine.txt" | 3 +++ developer/example/Example_* | 2 ++ developer/example/Example_CountingNumber_0 | 2 -- .../example/Example_IndexTree_Diagonal_SRM | 2 -- developer/example/Example_SRMI_Array | 2 -- developer/example/Example_SRM_List | 2 -- developer/example/list | 5 +++++ .../tool\360\237\226\211/bash_wrapper_list" | 11 ++------- "developer/tool\360\237\226\211/clean" | 21 +++++++++--------- "developer/tool\360\237\226\211/env_script" | 14 ++++++++++++ .../tool\360\237\226\211/gather_source_links" | 8 +------ .../tool\360\237\226\211/gather_third_party" | 13 +++-------- "developer/tool\360\237\226\211/make" | 14 +++--------- "developer/tool\360\237\226\211/make_example" | 17 +++++--------- "developer/tool\360\237\226\211/release" | 20 +++++------------ release/Ariadne.jar | Bin 23386 -> 33904 bytes "tool_shared/bespoke\360\237\226\211/env" | 3 +++ 18 files changed, 60 insertions(+), 81 deletions(-) create mode 100755 developer/bash/Build create mode 100755 developer/example/Example_* delete mode 100755 developer/example/Example_CountingNumber_0 delete mode 100755 developer/example/Example_IndexTree_Diagonal_SRM delete mode 100755 developer/example/Example_SRMI_Array delete mode 100755 developer/example/Example_SRM_List create mode 100755 developer/example/list create mode 100644 "developer/tool\360\237\226\211/env_script" diff --git a/developer/bash/Build b/developer/bash/Build new file mode 100755 index 0000000..2a18026 --- /dev/null +++ b/developer/bash/Build @@ -0,0 +1,2 @@ +#!/bin/bash +java com.ReasoningTechnology."Ariadne".Build diff --git "a/developer/document\360\237\226\211/Step_Right_Machine.txt" "b/developer/document\360\237\226\211/Step_Right_Machine.txt" index df98f3a..7191296 100644 --- "a/developer/document\360\237\226\211/Step_Right_Machine.txt" +++ "b/developer/document\360\237\226\211/Step_Right_Machine.txt" @@ -81,3 +81,6 @@ Rightmost true false At the last cell of a finite segment (or singleton tape). A precise loop that doesn’t compromise readability or efficiency. An elegant state pattern that aligns with the real-world model. The beauty of RT code format guiding clarity and consistency! + + +Callisto diff --git a/developer/example/Example_* b/developer/example/Example_* new file mode 100755 index 0000000..3c6f542 --- /dev/null +++ b/developer/example/Example_* @@ -0,0 +1,2 @@ +#!/bin/bash +java Example_* diff --git a/developer/example/Example_CountingNumber_0 b/developer/example/Example_CountingNumber_0 deleted file mode 100755 index 03434e8..0000000 --- a/developer/example/Example_CountingNumber_0 +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -java Example_CountingNumber_0 diff --git a/developer/example/Example_IndexTree_Diagonal_SRM b/developer/example/Example_IndexTree_Diagonal_SRM deleted file mode 100755 index 5b45c16..0000000 --- a/developer/example/Example_IndexTree_Diagonal_SRM +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -java Example_IndexTree_Diagonal_SRM diff --git a/developer/example/Example_SRMI_Array b/developer/example/Example_SRMI_Array deleted file mode 100755 index 80c5dbd..0000000 --- a/developer/example/Example_SRMI_Array +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -java Example_SRMI_Array diff --git a/developer/example/Example_SRM_List b/developer/example/Example_SRM_List deleted file mode 100755 index e0d48dd..0000000 --- a/developer/example/Example_SRM_List +++ /dev/null @@ -1,2 +0,0 @@ -#!/bin/bash -java Example_SRM_List diff --git a/developer/example/list b/developer/example/list new file mode 100755 index 0000000..826de9c --- /dev/null +++ b/developer/example/list @@ -0,0 +1,5 @@ +#!/bin/env bash + +for file in Example_*.class; do + echo "file: " $file + done diff --git "a/developer/tool\360\237\226\211/bash_wrapper_list" "b/developer/tool\360\237\226\211/bash_wrapper_list" index d4c620b..49e565b 100755 --- "a/developer/tool\360\237\226\211/bash_wrapper_list" +++ "b/developer/tool\360\237\226\211/bash_wrapper_list" @@ -1,15 +1,8 @@ #!/bin/env bash script_afp=$(realpath "${BASH_SOURCE[0]}") -# input guards - - env_must_be="developer/tool🖉/env" - if [ "$ENV" != "$env_must_be" ]; then - echo "$(script_fp):: error: must be run in the $env_must_be environment" - exit 1 - fi - - cd "$REPO_HOME"/developer +cd "$REPO_HOME"/developer || exit 1 +source tool🖉/env_script # list of classes that have main calls and get bash wrappers echo Build diff --git "a/developer/tool\360\237\226\211/clean" "b/developer/tool\360\237\226\211/clean" index 6e55aec..687883e 100755 --- "a/developer/tool\360\237\226\211/clean" +++ "b/developer/tool\360\237\226\211/clean" @@ -6,29 +6,30 @@ script_afp=$(realpath "${BASH_SOURCE[0]}") # directory if you have authored scripts for release, add a `bash🖉` # directory instead of putting them in `bash`. -# input guards - env_must_be="developer/tool🖉/env" - if [ "$ENV" != "$env_must_be" ]; then - echo "$(script_fp):: error: must be run in the $env_must_be environment" - exit 1 - fi +cd "$REPO_HOME"/developer || exit 1 +source tool🖉/env_script set -x # remove main build files - cd "$REPO_HOME"/developer - # rm_na currently does not handle links correctly rm -r scratchpad/* - rm_na jvm/* rm_na bash/* # remove example class files - rm_na example/*.class + cd example || exit 1 + + for file in Example_*.class; do + echo "file: " $file + rm_na "$file" + wrapper_name=$(basename "$file" .class) + rm_na "$wrapper_name" + done + set +x diff --git "a/developer/tool\360\237\226\211/env_script" "b/developer/tool\360\237\226\211/env_script" new file mode 100644 index 0000000..3a1dc02 --- /dev/null +++ "b/developer/tool\360\237\226\211/env_script" @@ -0,0 +1,14 @@ +# correct shell environment test +# + env_must_be="developer/tool🖉/env" + if [ "$ENV" != "$env_must_be" ]; then + echo "$(script_fp):: error: must be run in the $env_must_be environment" + exit 1 + fi + +# turn off literal shell globs +# bash options do not become part of the environment +# Without this bash takes unmatching globs literally +# + shopt -s nullglob + diff --git "a/developer/tool\360\237\226\211/gather_source_links" "b/developer/tool\360\237\226\211/gather_source_links" index c0a9874..b88b672 100755 --- "a/developer/tool\360\237\226\211/gather_source_links" +++ "b/developer/tool\360\237\226\211/gather_source_links" @@ -5,14 +5,8 @@ script_afp=$(realpath "${BASH_SOURCE[0]}") # the package name in scratch_pad. If the `-nolink` option is specified, # it makes a copy instead of a link. -# Input guards -env_must_be="developer/tool🖉/env" -if [ "$ENV" != "$env_must_be" ]; then - echo "$script_afp:: error: must be run in the $env_must_be environment" - exit 1 -fi - cd "$REPO_HOME"/developer || exit 1 +source tool🖉/env_script # Parse options nolink=false diff --git "a/developer/tool\360\237\226\211/gather_third_party" "b/developer/tool\360\237\226\211/gather_third_party" index 5941b9a..18a4fbc 100755 --- "a/developer/tool\360\237\226\211/gather_third_party" +++ "b/developer/tool\360\237\226\211/gather_third_party" @@ -1,21 +1,14 @@ #!/bin/env bash script_afp=$(realpath "${BASH_SOURCE[0]}") +cd "$REPO_HOME"/developer || exit 1 +source tool🖉/env_script + # Ariadne does not currently package any third party tools with the .jar # release, so this script does nothing. # This script expands Mosaic third party projects onto the scratchpad. This is done before releasing or running local ad hoc tests, so that the third party tools will be present. I.e. this is for creating a 'fat' jar. -# Input guards - - env_must_be="developer/tool🖉/env" - if [ "$ENV" != "$env_must_be" ]; then - echo "$(script_fp):: error: must be run in the $env_must_be environment" - exit 1 - fi - - cd "$REPO_HOME"/developer - # Expand the third party tools into the package tree # echo "Expanding .jar files to be included with Mosaic into scratchpad." diff --git "a/developer/tool\360\237\226\211/make" "b/developer/tool\360\237\226\211/make" index 64602b6..fcd38a7 100755 --- "a/developer/tool\360\237\226\211/make" +++ "b/developer/tool\360\237\226\211/make" @@ -1,15 +1,8 @@ #!/bin/env bash script_afp=$(realpath "${BASH_SOURCE[0]}") -# input guards - - env_must_be="developer/tool🖉/env" - if [ "$ENV" != "$env_must_be" ]; then - echo "$(script_fp):: error: must be run in the $env_must_be environment" - exit 1 - fi - - cd "$REPO_HOME"/developer +cd "$REPO_HOME"/developer || exit 1 +source tool🖉/env_script echo "Compiling files..." set -x @@ -35,9 +28,8 @@ echo "Creating JAR file..." echo "Creating bash wrappers..." mkdir -p bash - # wrapper is a space separated list wrapper=$(bash_wrapper_list) - for file in $wrapper;do + for file in "${wrapper[@]}"; do cat > bash/$file << EOL #!/bin/bash java com.ReasoningTechnology."$PROJECT".$file diff --git "a/developer/tool\360\237\226\211/make_example" "b/developer/tool\360\237\226\211/make_example" index 3cd18be..738770e 100755 --- "a/developer/tool\360\237\226\211/make_example" +++ "b/developer/tool\360\237\226\211/make_example" @@ -1,15 +1,11 @@ #!/bin/env bash script_afp=$(realpath "${BASH_SOURCE[0]}") -# input guards +cd "$REPO_HOME"/developer || exit 1 +source tool🖉/env_script - env_must_be="developer/tool🖉/env" - if [ "$ENV" != "$env_must_be" ]; then - echo "$(script_fp):: error: must be run in the $env_must_be environment" - exit 1 - fi - cd "$REPO_HOME"/developer/example +cd example || exit 1 echo "Compiling example .java files..." @@ -26,9 +22,8 @@ echo "Creating bash wrappers..." set -x -wrapper=(Example_*.class) - -for file in "${wrapper[@]}"; do +for file in Example_*.class; do + echo "file: " $file wrapper_name=$(basename "$file" .class) cat > "$wrapper_name" << EOL #!/bin/bash @@ -37,7 +32,7 @@ EOL # Make the wrapper executable chmod +x "$wrapper_name" -done + done set +x diff --git "a/developer/tool\360\237\226\211/release" "b/developer/tool\360\237\226\211/release" index c8c32fe..688ff8c 100755 --- "a/developer/tool\360\237\226\211/release" +++ "b/developer/tool\360\237\226\211/release" @@ -3,20 +3,14 @@ script_afp=$(realpath "${BASH_SOURCE[0]}") # before running this script, gather everything needed for the release on the scratchpad -# input guards +cd "$REPO_HOME"/developer || exit 1 +source tool🖉/env_script - if [ -z "$REPO_HOME" ]; then - echo "$(script_fp):: REPO_HOME is not set." - exit 1 - fi +# Inform the user - env_must_be="developer/tool🖉/env" - if [ "$ENV" != "$env_must_be" ]; then - echo "$(script_fp):: must be run in the $env_must_be environment" - exit 1 - fi + echo "The pwd for this script is `pwd`." - cd "$REPO_HOME"/developer +# we build into the scratchpad if [ ! -d scratchpad ]; then echo "$(script_fp):: no scratchpad directory" @@ -24,10 +18,6 @@ script_afp=$(realpath "${BASH_SOURCE[0]}") fi -# Inform the user - - echo "The pwd for this script is `pwd`." - # Function to copy and set permissions install_file() { diff --git a/release/Ariadne.jar b/release/Ariadne.jar index b077223ead54f0133d859ff33f6725baec7699e5..fda7fab3978533059ee3e31cd3de668a8c70d409 100644 GIT binary patch delta 27246 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 Dy}+2< delta 17760 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 diff --git "a/tool_shared/bespoke\360\237\226\211/env" "b/tool_shared/bespoke\360\237\226\211/env" index 18d2060..01f47a3 100644 --- "a/tool_shared/bespoke\360\237\226\211/env" +++ "b/tool_shared/bespoke\360\237\226\211/env" @@ -5,6 +5,9 @@ if [[ "${BASH_SOURCE[0]}" == "$0" ]]; then exit 1 fi +# without this bash takes non-matching globs literally +shopt -s nullglob + # -------------------------------------------------------------------------------- # project definition -- 2.20.1