-/env/
-library/
-machine_fodder/
temporary/
*~
-*.o
a.out
--- /dev/null
+/linker/
+/machine/
+++ /dev/null
-#!/bin/bash
-
-# Set the platform type: currently "Debian" or "Fedora"
-PLATFORM="Fedora"
-
-# Update package list and install Java based on platform type
-if [ "$PLATFORM" == "Debian" ]; then
- sudo apt-get update
- sudo apt-get install -y default-jre
-elif [ "$PLATFORM" == "Fedora" ]; then
- sudo dnf update -y
- sudo dnf install -y java-1.8.0-openjdk
-else
- echo "Unsupported platform type: $PLATFORM"
- exit 1
-fi
-
-# Download ANTLR jar file and place it in the env directory
-mkdir -p env
-curl -o env/antlr-4.9.2-complete.jar https://www.antlr.org/download/antlr-4.9.2-complete.jar
-
-# Set environment variables for ANTLR
-export CLASSPATH=".:$(pwd)/env/antlr-4.9.2-complete.jar:$CLASSPATH"
-export PATH="$PATH:$(pwd)/env"
-
-echo "Installation complete. Java and ANTLR have been installed."
--- /dev/null
+#!/usr/bin/env bash
+
+# Set the platform type: currently "Debian" or "Fedora"
+PLATFORM="Fedora"
+
+# Define the version and URL for the JDK
+JDK_VERSION="17.0.2"
+JDK_URL="https://download.oracle.com/java/17/latest/jdk-$JDK_VERSION_linux-x64_bin.tar.gz"
+
+# Get the project root path by removing 'executor' from the script path
+script_path="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
+project_root="${script_path%/*}"
+
+# Create the tool/executor directory if it doesn't exist
+mkdir -p "$project_root/tool/executor"
+
+# Create a symbolic link tool/bin pointing to tool/executor
+ln -sfn "$project_root/tool/executor" "$project_root/tool/bin"
+
+# Download and extract JDK to the tool directory
+curl -L -o "$project_root/tool/jdk-$JDK_VERSION.tar.gz" "$JDK_URL"
+tar -xzf "$project_root/tool/jdk-$JDK_VERSION.tar.gz" -C "$project_root/tool"
+rm "$project_root/tool/jdk-$JDK_VERSION.tar.gz"
+
+# Set JAVA_HOME and update PATH to use the local JDK
+export JAVA_HOME="$project_root/tool/jdk-$JDK_VERSION"
+export PATH="$JAVA_HOME/bin:$PATH"
+
+# Move the JDK binaries to the tool/executor directory
+mv "$JAVA_HOME/bin/"* "$project_root/tool/executor/"
+rm -rf "$JAVA_HOME/bin"
+
+# Download ANTLR jar file and place it in the tool/executor directory
+curl -o "$project_root/tool/executor/antlr-4.9.2-complete.jar" https://www.antlr.org/download/antlr-4.9.2-complete.jar
+
+# Set environment variables for ANTLR
+export CLASSPATH=".:$project_root/tool/executor/antlr-4.9.2-complete.jar:$CLASSPATH"
+export PATH="$PATH:$project_root/tool/executor"
+
+echo "Installation complete. Java and ANTLR have been installed."
# git does not keep empty directories
-find . -type d -exec touch {}/.githolder \;
+find . -type d -empty -exec sh -c 'touch "$0/.githolder"' {} \;
+++ /dev/null
-#!/usr/bin/env bash
-
-script_path="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
-export PROJECT=$(basename "$script_path")
-export PATH="$script_path"/env/bin:$PATH
-
-# Set environment variables for ANTLR
-export CLASSPATH=".:$script_path/env/antlr-4.9.2-complete.jar:$CLASSPATH"
-export PATH="$PATH:$script_path/env"
-
-cd development
--- /dev/null
+#!/usr/bin/env bash
+
+script_path="$(dirname "$(realpath "${BASH_SOURCE[0]}")")"
+project_root="${script_path%/*}"
+export PROJECT=$(basename "$project_root")
+
+# Set PATH to include tool/executor
+export PATH="$project_root/tool/executor:$PATH"
+
+# Set environment variables for ANTLR
+export CLASSPATH=".:$project_root/tool/executor/antlr-4.9.2-complete.jar:$CLASSPATH"
+
+alias ls="ls -a"
+cd "$project_root/developer"
the lector is typically the project manager. In the developer's directory it is
typically the developer. In general it is anyone who reads the docs.
+# Hidden Files
+
+In my humble opinion that git uses hidden files is unfortunate. In general I
+find hidden files in shared projects to be a bad idea. The approach of using a
+symbolic link to give hidden files visible names creates a maintenance
+problem. The idea of setting explicit parameters for git can be used to
+address the git hidden files, but it does not expose other hidden files.
+There is also an issue of coordinating with other team members who want
+hidden files. Hence, a general solution that solves all these issues is
+to alias `ls` to `ls -a`, which is done in the initialization file
+for the project.
+
+
<!-- LocalWords: lector
-->
The work area for developers is the `developer` directory. All other subdirectories
and files found at the top level are for project management.
-Run `. development_init` in a shell to setup the development environment and to enter the
-`development` directory.
+The best way to setup the environment and to enter the `developer` directory is
+to use the `repo` command found in RT's `resource` project. The `repo` command
+will start a new shell with the proper environment variables setup for the
+project, and nothing else.
+
+A project can also be entered by sourcing `use_tool` by running the command
+`. exector/use_tool` in a shell. `use_tool` is analogous to `activate` in Python.
+
+
-`development_init` is analogous to `activate` in Python.
-See the `resource` project for the `repo` command and additional tools for entering
-a directory and setting the bash prompt.