blob: 268c701d6d3bd06ddd5ac1098584a33b63e3a5f6 [file] [log] [blame]
# -*- sh -*-
## -----------------------------------------------------------------------
## Intent:
## o This script can be used as a one-liner for sourcing common scripts.
## o Preserve command line arguments passed.
## o Accept common.sh arguments specifying a set of libraries to load.
## o Dependent common libraries will automatically be sourced.
## -----------------------------------------------------------------------
## Usage:
## o source common.sh --common-args-begin-- --tempdir
## o source common.sh --common-args-begin-- --stacktrace
## -----------------------------------------------------------------------
# __DEBUG_COMMON__=1
[[ -v __DEBUG_COMMON__ ]] && echo " ** ${BASH_SOURCE[0]}: BEGIN"
## -----------------------------------------------------------------------
## Intent: Anonymous function used to source common shell libs
## -----------------------------------------------------------------------
## Usage: source common.sh '--stacktrace'
## -----------------------------------------------------------------------
function __anon_func__()
{
local iam="${BASH_SOURCE[0]%/*}"
local cab='--common-args-begin--'
declare -a args=($*)
local raw
raw="$(readlink --canonicalize-existing --no-newline "${BASH_SOURCE[0]}")"
local top="${raw%/*}"
local common="${top}/common/sh"
local arg
for arg in "${args[@]}";
do
case "$arg" in
--tempdir) source "${common}"/tempdir.sh ;;
--traputils) source "${common}"/traputils.sh ;;
--stacktrace) source "${common}"/stacktrace.sh ;;
*) echo "ERROR ${BASH_SOURCE[0]}: [SKIP] unknown switch=$arg" ;;
esac
done
return
}
##----------------##
##---] MAIN [---##
##----------------##
source "${BASH_SOURCE[0]%/*}/preserve_argv.sh" # pushd @ARGV
if [ $# -gt 0 ] && [ "$1" == '--common-args-begin--' ]; then
shift # remove arg marker
fi
if [ $# -eq 0 ]; then
# common.sh defaults
set -- '--tempdir' '--traputils' '--stacktrace'
fi
__anon_func__ "$@"
unset __anon_func__
source "${BASH_SOURCE[0]%/*}/preserve_argv.sh" # popd @ARGV
[[ -v __DEBUG_COMMON__ ]] && echo " ** ${BASH_SOURCE[0]}: END"
: # NOP
# [EOF]