autospec/lib/libmsgmng.lib.in
2012-11-10 15:47:12 +01:00

107 lines
3.1 KiB
Bash

#!/bin/bash
# libmsgmng.lib -- @package@ library to manage debug/warning/error messages
# Copyright (C) 2005,2006,2008,2012 Davide Madrisan <davide.madrisan@gmail.com>
[ "$libmsgmng_is_loaded" = 1 ] || {
libmsgmng_is_loaded=1
[ -z "$BASH" ] || [ ${BASH_VERSION:0:1} -lt 2 ] &&
echo $"this script requires bash version 2 or better" >&2 && exit 1
if [[ -z "$LANG" && -r /etc/sysconfig/i18n ]]; then
. /etc/sysconfig/i18n
[ "$LANG" ] && export LANG
fi
TEXTDOMAIN="libmsgmng"; export TEXTDOMAIN
# notify family of message handling functions:
# - notify.warning
# - notify.error
# - notify.debug
# - notify.note
# args:
# $1 : message to print
# note:
# 1. debug messages are only printed if 'verbose' is great then '0'
# 2. error notifications are followed by a call to 'EXIT_FUNC'
# or 'exit' if this variable is unset
# (can set to 'return' for instance)
notify_def_msg="<"$"no message"">"
function notify.warning() {
echo -e "${WARN}WARNING${NORM}: ${1:-$notify_def_msg}" 1>&2
}
function notify.error() {
echo -e "${EXIT}ERROR${NORM}: ${EXIT}${1:-$notify_def_msg}${NORM}" 1>&2
${EXIT_FUNC:-"exit"} 1
}
function notify.debug() {
[ ${verbose:-0} -gt 1 ] || return
echo -e "${WARN}DEBUG${NORM}: ${1:-$notify_def_msg}" 1>&2
}
function notify.note() {
[ ${verbose:-0} -ge 0 ] || return
echo -e "${1:-$notify_def_msg}"
}
# function notify.enable_colors
# enable if possible the colorized output
# args:
# none
function notify.enable_colors() {
local colorize_theme="$1"
# for backward compatibility
[ "$colorize_theme" ] || colorize_theme="terminal-dark"
case "$colorize_theme" in
"web")
CRIT="<font color=white style=\"background-color:red\">"
NOTE="<font color=gold>"
WARN="<font color=red>"
EXIT="$CRIT"
NORM="</font>"
;;
"terminal-white")
if [[ -t 1 && "$TERM" != raw && "$TERM" != dumb ]]; then
ESC=$(echo -en "\033") # ascii ESCape
[ "$NOTE" ] || NOTE="${ESC}[1;34m" # switch on blu
[ "$WARN" ] || WARN="${ESC}[1;31m"
[ "$EXIT" ] || EXIT="${ESC}[1;31m"
[ "$NORM" ] || NORM=$(echo -en "${ESC}[m\017")
else
ESC= CRIT= NOTE= WARN= EXIT= NORM=
fi
;;
"terminal-dark")
if [[ -t 1 && "$TERM" != raw && "$TERM" != dumb ]]; then
ESC=$(echo -en "\033") # ascii ESCape
[ "$CRIT" ] || CRIT="${ESC}[1;31m" # switch on red
[ "$NOTE" ] || NOTE="${ESC}[1;33m" # switch on yellow
[ "$WARN" ] || WARN="${ESC}[1;31m"
[ "$EXIT" ] || EXIT="${ESC}[1;31m"
[ "$NORM" ] || NORM=$(echo -en "${ESC}[m\017")
else
ESC= CRIT= NOTE= WARN= EXIT= NORM=
fi
;;
*) echo \
$"unknown color theme \`$colorize_theme': colors will be disabled"
ESC= CRIT= NOTE= WARN= EXIT= NORM=
;;
esac
}
# function notify.disable_colors
# disable the colorized output
# args:
# none
function notify.disable_colors() {
ESC= CRIT= NOTE= WARN= EXIT= NORM=
}
} # endif $libmsgmng_is_loaded