88 lines
1.7 KiB
Plaintext
88 lines
1.7 KiB
Plaintext
# Utility functions/macros for logging
|
|
|
|
_VERBOSITY="INFO"
|
|
_VERBOSITIES="ERROR WARNING INFO DEBUG"
|
|
|
|
function list_contains() {
|
|
if [ $# -ne 2 ]; then
|
|
_log "FATAL" "Invalid number of argument! \
|
|
(${BASH_SOURCE[1]##*/} ${BASH_LINENO[0]}::list_contains())"
|
|
exit 127
|
|
fi
|
|
|
|
local list=$1
|
|
local obj=$2
|
|
|
|
for word in $list; do
|
|
[ "$word" == "$obj" ] && return 0
|
|
done
|
|
return 1
|
|
}
|
|
|
|
function set_verbority() {
|
|
if [ $# -ne 1 ]; then
|
|
_log "FATAL" "Invalid number of argument! \
|
|
(${BASH_SOURCE[1]##*/} ${BASH_LINENO[0]}::set_verbority())"
|
|
exit 127
|
|
fi
|
|
|
|
local verb=$1
|
|
|
|
if list_contains "$_VERBOSITIES" "$1"; then
|
|
_VERBOSITY=$verb
|
|
else
|
|
_log "FATAL" "Invalid verbosity level specified: '$1'"
|
|
exit 127
|
|
fi
|
|
}
|
|
|
|
# Return 0 if current VERBISITY is greater equal than the argument
|
|
function check_verbosity() {
|
|
if [ $# -ne 1 ]; then
|
|
_log "FATAL" "Invalid number of argument! \
|
|
(${BASH_SOURCE[1]##*/} ${BASH_LINENO[0]}::check_verbosity())"
|
|
exit 127
|
|
fi
|
|
|
|
local verb=$1
|
|
|
|
for verbosity in $_VERBOSITIES; do
|
|
if [ "$verbosity" == "$verb" ]; then
|
|
return 0
|
|
elif [ "$_VERBOSITY" == "$verbosity" ]; then
|
|
return 1
|
|
fi
|
|
done
|
|
|
|
return 1
|
|
}
|
|
|
|
function _log() {
|
|
local level=$1
|
|
shift
|
|
local messages=$@
|
|
printf "[%-7s] %s\n" "$level" "$messages"
|
|
}
|
|
|
|
function log() {
|
|
if [ $# -ne 2 ]; then
|
|
_log "FATAL" "Invalid number of argument! \
|
|
(${BASH_SOURCE[1]##*/} ${BASH_LINENO[0]}::log())"
|
|
exit 127
|
|
fi
|
|
|
|
local level=$1
|
|
shift
|
|
local messages=$@
|
|
|
|
list_contains "$_VERBOSITIES" "$level"
|
|
if [ $? -ne 0 ]; then
|
|
_log "FATAL" "Invalid verbosity level specified: '$1'"
|
|
exit 127
|
|
fi
|
|
|
|
if check_verbosity $level; then
|
|
_log "$level" "$messages"
|
|
fi
|
|
}
|