#!/usr/bin/env bash
# --- here begins the evolution
# of this cross-platform shell library
# --> functions (lite) [ functions.sh ]
#
# created 2024095(+/-3)
# author: @jakimfett
# inspiration: functions.sh
# Set DEBUG equal to 0 for least info, \
# 9 for most info, \
# default is 1.
[ -z ${DEBUG} ] && DEBUG=1
# Inform the user of their choice.
if [[ "${DEBUG}" -gt 0 ]]; then
echo 'Shim loaded (DEBUG='${DEBUG}'), script continues.'
echo
fi
# Make it easier to inform the user.
function logThis {
if [[ "${DEBUG}" -gt 3 ]]; then
if [ ! -z "${@}" ]; then
echo "function logThis got value '${@}'"
fi
fi
if [[ ! -z "${@}" ]]; then
echo -e "${@}"
else
echo
fi
}
function lt {
logThis "${@}"
}
[ "${DEBUG}" -gt 1 ] && lt "@function:logThis (& 'lt' alias) testing..." &&\
lt "@function:logThis success" && lt "---"
[ "${DEBUG}" -gt 0 ] && lt
# @todo exit (w/ trapping?) for if `lt` fails
# Get realpath (and inform user)
pathCmd='srcRealpath="$(realpath "${BASH_SOURCE}")"'
if [[ "${DEBUG}" -gt 2 ]]; then
time eval "${pathCmd}"
else
eval "${pathCmd}"
fi
if [[ "${DEBUG}" -gt 1 ]]; then
lt "BASH_SOURCE realpath: '${srcRealpath}'"
fi
# ---
# Getting the source directory path
dirCmd='srcDirName="$(dirname "${srcRealpath}")"'
if [[ "${DEBUG}" -gt 2 ]]; then
time eval "${dirCmd}"
else
eval "${dirCmd}"
fi
if [[ "${DEBUG}" -gt 1 ]]; then
lt "realpath dirname: '${srcDirName}'"
fi
function loadMixins {
for srcFile in $(find "${srcDirName}/util" -name '*.src' ); do
if [[ "${DEBUG}" -gt 2 ]]; then
time . "${srcFile}"
else
. "${srcFile}"
fi
if [[ $(type -t lt) == function ]]; then
if [[ "${DEBUG}" -gt 1 ]]; then
lt "loaded from '${srcFile}'"
fi
else
echo "Could not load logThis function!"
fi
done
return 0
}
if [[ "${DEBUG}" -gt 2 ]]; then
time loadMixins
else
loadMixins
fi
if [[ "${DEBUG}" -ne 0 ]]; then
lt "mixins sourced from '${srcDirName}/util'" && lt
fi
function selfTest {
# todo shellcheck
lt "\tdiscreet testing function not yet implemented,"
lt "\tedit DEBUG variable in '${BASH_SOURCE}'"
lt "\t\t then source again to see inline tests"
}
[ "${DEBUG}" -gt 0 ] && lt "@function:selfTest loaded"
lt
lt "running self-test function 'selfTest':"
selfTest
#@todo port over function registration
lt "\n> shim loading complete, see above for available functions"