100 lines
3.2 KiB
Bash
Executable File
100 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# don't bother if bash is not the shell
|
|
[ ! "$SHELL" = "/bin/bash" ] && return 1
|
|
|
|
DIR=${1:-$(dirname ${BASH_SOURCE[0]})}
|
|
|
|
[[ $(declare -F | grep module_load) ]] || source "$BASH_SHELL_BASE/module.lib"
|
|
|
|
# uncomment for debuggin
|
|
# echo $USER running load script in $DIR
|
|
# echo callers
|
|
# caller
|
|
# echo $(ps -o comm= $PPID)
|
|
# echo -----
|
|
# echo $BASH_SHELL_DIRS
|
|
|
|
module_load file
|
|
[[ $? -ne 0 ]] && echo unable to access the file module, aboarting load && return 1
|
|
|
|
function shell_process_directory () {
|
|
local SUBDIRS
|
|
local DIR
|
|
|
|
DIR=${1:-$BASH_SHELL_BASE}
|
|
# echo soucring directory $DIR
|
|
# if [[ $DIR = "$BASH_SHELL_BASE" ]]; then
|
|
# BASH_SHELL_IGNORE=$(shell_get_ignores)
|
|
# excludes=$BASH_SHELL_IGNORE
|
|
# else
|
|
# excludes=$(shell_get_ignores $DIR)
|
|
# [[ $? -ne 0 ]] && excludes=$BASH_SHELL_IGNORE
|
|
# fi
|
|
|
|
if [ -d "$DIR" ]; then
|
|
if [ "$DIR" = "$BASH_SHELL_BASE" ] && [ "$BASH_SHELL_BASE_LOADED" = "true" ]; then
|
|
if [ -v PS1 ]; then
|
|
echo base directory already sourced
|
|
read -p "do you want to re-source the base (not recommended)? " -n 1 -r
|
|
echo
|
|
[[ ! $REPLY =~ ^[Yy]$ ]] && return 1
|
|
# else
|
|
# echo non-interactive shell
|
|
# return 1
|
|
fi
|
|
fi
|
|
|
|
if [[ $DIR != "$BASH_SHELL_BASE" ]] && [[ -f $DIR/load.sh ]]; then
|
|
# echo "$DIR/load.sh" found, running instead of default load
|
|
source "$DIR/load.sh"
|
|
else
|
|
# default processing
|
|
local SUBDIRS
|
|
local IGNORE_FILE
|
|
SUBDIRS=$([[ -f "$DIR/.bash-shell-include" ]] && cat "$DIR/.bash-shell-include" || echo $BASH_SHELL_BASE_SUBDIRS)
|
|
[[ $SSH_LOGIN ]] && SUBDIRS+=" ssh"
|
|
IGNORE_FILE="$([[ -f "$DIR/.bash-shell-ignore" ]] && echo "$DIR" || echo "$BASH_SHELL_BASE")/.bash-shell-ignore"
|
|
for SUBDIR in $SUBDIRS; do
|
|
if [ -e "$DIR/$SUBDIR" ]; then
|
|
|
|
# echo processing subdirectory $DIR/$SUBDIR
|
|
# must quote all globs to avoid bash glob expansion which is likely on
|
|
# TODO have default set of ignores plus check for .shell-ignore
|
|
# source_dir -p "archive" -x '"*.off" "*.md" "*TODO*" "LICENSE" "*.sample"' -d 0 $DIR/$SUBDIR
|
|
# source_dir -p "archive" -x "$excludes" -d 0 $DIR/$SUBDIR
|
|
source_dir -f "$IGNORE_FILE" -d 0 $DIR/$SUBDIR
|
|
# else
|
|
# echo no subdirectory $DIR/$SUBDIR to process, ignorning
|
|
fi
|
|
done
|
|
fi
|
|
# echo "done sourcing directory $DIR"
|
|
# else
|
|
# echo $DIR does not exist nothing to source
|
|
fi
|
|
|
|
}
|
|
|
|
# process the base directory by default
|
|
unset BASH_SHELL_BASE_LOADED
|
|
unset BASH_SHELL_LOADED
|
|
|
|
# echo bash shell dirs: $BASH_SHELL_DIRS
|
|
DIRS=${1:-$BASH_SHELL_DIRS}
|
|
|
|
BASH_SHELL_BASE_SUBDIRS=$(cat "$BASH_SHELL_BASE/.bash-shell-include")
|
|
# echo subdir includes: $BASH_SHELL_BASE_SUBDIRS
|
|
|
|
for dir in $DIRS; do
|
|
# echo $dir
|
|
shell_process_directory $dir
|
|
[[ $dir == "$BASH_SHELL_BASE" ]] && BASH_SHELL_BASE_LOADED=true
|
|
done
|
|
|
|
export BASH_SHELL_LOADED=true
|
|
|
|
# process user
|
|
# Note: $HOME/shell or $HOME/BASH_SHELL_USER are sourced via $HOME/.bashrc
|
|
# echo $(envg BASH) | xargs -n 1
|