From 153d299a41b9be4e15dab1ca29bb93a74bd2445d Mon Sep 17 00:00:00 2001 From: Andrew Cady Date: Fri, 29 Apr 2016 14:36:26 -0400 Subject: fix paths (in progress) --- src/var.sh | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 src/var.sh (limited to 'src/var.sh') diff --git a/src/var.sh b/src/var.sh new file mode 100644 index 0000000..d0c7df5 --- /dev/null +++ b/src/var.sh @@ -0,0 +1,75 @@ +die() +{ + if [ "$*" ]; then + printf 'Error: %s\n' "$*" >&2 + else + echo 'Error: fatal error' >&2 + fi + exit 1 +} + +nosex() +{ + case $- in + *x*) set +x; "$@"; set -x;; + *) "$@";; + esac +} + +_nonempty() +{ + printf '[ "${%s}" ] || die \"mandatory parameter is empty: %s\";\n' "$1" "$1" +} + +_mandatory() +{ + printf '[ $# -ge %d ] || die \"mandatory parameter is missing: %s\";\n' "$2" "$1" +} + +_assign() +{ + printf 'local %s="${%d}";\n' "$1" "$2" +} + +_args() +{ + local v i=1 check="$1" assign="$2" + shift + shift + for v; do + $assign "$v" "$i" + $check "$v" "$i" + i=$((i+1)) + done +} + +_ARGS() +{ + echo eval "$(_args _mandatory _assign "$@")" +} + +_ARGS_NONEMPTY() +{ + echo eval "$(_args _nonempty _assign "$@")" +} + +_ARGS_OPTIONAL() +{ + echo eval "$(_args : _assign "$@")" +} + +_NONEMPTY() +{ + echo eval "$(_args _nonempty : "$@")" +} + +ARGS() { nosex _ARGS "$@"; } +ARGS_NONEMPTY() { nosex _ARGS_NONEMPTY "$@"; } +ARGS_OPTIONAL() { nosex _ARGS_OPTIONAL "$@"; } +NONEMPTY() { nosex _NONEMPTY "$@"; } + +ARGS_NE() { ARGS_NONEMPTY "$@"; } + +if [ "${0#-}" = bash ]; then + export -f die _nonempty _mandatory _args ARGS ARGS_NONEMPTY ARGS_OPTIONAL +fi -- cgit v1.2.3