_LOADED_LIBS=() include() { local file for file in "${@}"; do if [[ -f "${XDG_DATA_HOME}/buddy/lib/${file}.bash" ]]; then # shellcheck disable=SC1090 source "${XDG_DATA_HOME}/buddy/lib/${file}.bash" elif [[ -f "${XDG_DATA_HOME}/buddy/lib/${file}.sh" ]]; then # shellcheck disable=SC1090 source "${XDG_DATA_HOME}/buddy/lib/${file}.sh" else >&2 echo "include unknown: ${file}" exit 1 fi done } require() { local file local previous for file in "${@}"; do for previous in "${_LOADED_LIBS[@]}"; do if [[ "${previous}" == "${file}" ]]; then continue 2 fi done _LOADED_LIBS+=("${file}") include "${file}" done }