dotfiles/_home/private_dot_config/sz.env/executable__.load.sh

87 lines
2.9 KiB
Bash

#! /usr/bin/env bash
# Helper function
is_sourced() {
if [ -n "$ZSH_VERSION" ]; then
case $ZSH_EVAL_CONTEXT in *:file:*) return 0;; esac
else # Add additional POSIX-compatible shell names here, if needed.
case ${0##*/} in dash|-dash|bash|-bash|ksh|-ksh|sh|-sh) return 0;; esac
fi
return 1; # NOT sourced.
}
BASE_0=${BASE_0:-$0}
BASE_SHELL=$(basename "$SHELL")
is_cmd() {
type -- "${@}" 2> /dev/null 1> /dev/null
}
if is_sourced; then
# shellcheck disable=SC2139 # This expands when defined, not when used.
alias _r="unset DBG; exec $SHELL -l "
# shellcheck disable=SC2139 # This expands when defined, not when used.
alias _rdbg="exec sh -c 'DBG=1 $SHELL -l '"
SZ_ENV_ROOT=$( cd -- "$( dirname -- "${BASE_0}" )" &> /dev/null && pwd )
USER_HOME=$HOME
[[ -n "${SUDO_USER}" ]] && USER_HOME="$(eval "echo ~${SUDO_USER}")"
load_next() {
[ "$LOAD_EXIT" != "0" ] && return 1
if [[ -n "${DBG}" ]]; then
echo "Loading ${1}..." 1>&2
#shellcheck disable=SC2086
${DBG/%1/:} 1>&2
fi
#shellcheck source=/dev/null
. "${1}"
}
load_all() {
local ALL_ENV_FILES
if [ -z "$SZ_ENV_LOADED" ]; then
SZ_ENV_LOADED=1
LOAD_EXIT=0
# The following constructs a list of load_next ... commands
ALL_ENV_FILES="$(
find ~/.config/sz.env -xdev -type d -not -name '*.off' \
-exec sh -c '
find "$1" -xdev -maxdepth 1 -type f -name "ID_*.env" | sort
' shell '{}' ';' \
-exec sh -c '
find "$1" -xdev -maxdepth 1 -type f -name "PATH_*.env" | sort
' shell '{}' ';' \
-exec sh -c '
find "$1" -xdev -maxdepth 1 -type f -name "*.env" -not -name "ID_*" -not -name "PATH_*" -print | sort
' shell '{}' ';' \
| sed -e 's/^/load_next "/; s/$/";/'
)"
if [ -n "$DBG_NO_SZ_LOAD" ]; then
ALL_ENV_FILES=$(<<<"$ALL_ENV_FILES" sed -Ee '
/PATH_/!s/^(load_next )/# \1/
')
printf 'Loading limited environment...\n'
fi
# Run the constructed (see above) list
eval "$ALL_ENV_FILES"
fi
}
load_all
elif [[ "$1" == '-' ]]; then
echo "BASE_0=${BASE_0}"
cat "${0}"
else
is_cmd "${BASE_0##*/}" && SCRIPT_NAME="${BASE_0##*/}" || SCRIPT_NAME="${BASE_0/$HOME/\~}"
printf '%s\n' \
"It seems '$SCRIPT_NAME' was invoked as a standalone script." \
'This script is designed to produce output that is sourced.' \
'' \
'The recommended way is to use calling pattern below:' \
" $ . <( $SCRIPT_NAME - ) # Note the '-' after the script's name" \
''
fi