include defaults.sh
include log.sh
include misc.sh
include null.sh
include useextglob.sh
#
# assume.sh
#
# Author: konsolebox
# Copyright free
# Created and updated 2008-2012
#
# void assume (string <expression>, [meta <arg>, ...], ["--", string <info>, ...])
#
function assume {
eval "[[ $1 ]] 2>&$NULL" || assume_reportfailure "$@"
}
# void assume_reportfailure (...)
#
function assume_reportfailure {
log_fcall "$@"
# EXPR
local EXPR=$1
shift
# INFO and ARGS
local -a INFO=() ARGS=()
local -i I J
for (( I = $#; I; --I )); do
[[ ${!I} = -- ]] && break
done
if [[ I -gt 0 ]]; then
INFO=("${@:I + 1}")
ARGS=("${@:1:I - 1}")
else
ARGS=("$@")
fi
# MESSAGE
local -a MESSAGE=()
local -i L=0
local IFS=$DEFAULTS_IFS
MESSAGE[L++]="Expression $EXPR failed in function ${FUNCNAME[2]}()."
if [[ ${#INFO[@]} -gt 0 ]]; then
MESSAGE[L++]=''
MESSAGE[L++]='Info:'
MESSAGE[L++]=''
MESSAGE[L++]=$'\t'"${INFO[*]}"
fi
if [[ ${#ARGS[@]} -gt 0 ]]; then
MESSAGE[L++]=''
MESSAGE[L++]='Arguments:'
MESSAGE[L++]=''
for I in "${!ARGS[@]}"; do
MESSAGE[L++]=$'\t$'$(( I + 2 ))": \"${ARGS[I]}\""
done
fi
IFS=$'\n'
dumpvariables
MESSAGE[L++]=''
MESSAGE[L++]="Variables dumped in \"$__\"."
$GLOBALS_USERLOGDIR/variables.dump
log_fatalerror "${MESSAGE[*]}"
exit 1
}