Marty Oehme
f0f3f6661b
Added documentation for the various severity levels a dbg_msg function call can have (info, warn, error).
107 lines
2.1 KiB
Bash
107 lines
2.1 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
### Utility functions to work with files
|
|
file_exists() {
|
|
if [[ -f "$1" ]]; then
|
|
true
|
|
else
|
|
false
|
|
fi
|
|
}
|
|
# check for existence of pattern $2 in file $1
|
|
line_exists() {
|
|
local file="$1"
|
|
local line="$2"
|
|
|
|
if ! file_exists "$file" || ! grep -qe "$line" "$file"; then
|
|
false
|
|
else
|
|
true
|
|
fi
|
|
}
|
|
# prepare newline at eof to make adding newlines easier
|
|
eol_exists_or_append() {
|
|
local file="$1"
|
|
local eof
|
|
eof=$(tail -c 1 "$file")
|
|
|
|
if [ -n "$eof" ]; then
|
|
printf "\\n" >>"$file"
|
|
fi
|
|
}
|
|
# append line $2 to file $1
|
|
line_exists_or_append() {
|
|
local file="$1"
|
|
local line="$2"
|
|
local new="${3:-$2}"
|
|
|
|
if ! line_exists "$file" "$line"; then
|
|
eol_exists_or_append "$file"
|
|
echo "$new" >>"$file"
|
|
fi
|
|
}
|
|
# Print a debug message to stdout
|
|
# Takes arguments in the form:
|
|
# dbg_msg application-name [severity] message
|
|
#
|
|
# Application name and message are mandatory.
|
|
# Severity level should be one of
|
|
# error | warn | info
|
|
# in decreasing severity.
|
|
# If no severity level is applied, it defaults to info.
|
|
dbg_msg() {
|
|
local application="$1"
|
|
shift
|
|
|
|
# the debug-level of the message
|
|
local level="$1"
|
|
local color
|
|
case "$level" in
|
|
error)
|
|
level=0
|
|
color="\u001b[31;1m"
|
|
shift
|
|
;;
|
|
warn)
|
|
level=1
|
|
color="\u001b[33;1m"
|
|
shift
|
|
;;
|
|
info)
|
|
level=2
|
|
color="\u001b[32;1m"
|
|
shift
|
|
;;
|
|
*)
|
|
level=2
|
|
color="\u001b[32;1m"
|
|
;;
|
|
esac
|
|
|
|
# the minimum debug level to display
|
|
local display=${STYLER_DEBUG:-"0"}
|
|
case "$display" in
|
|
error) display=0 ;;
|
|
warn) display=1 ;;
|
|
info) display=2 ;;
|
|
esac
|
|
|
|
# if the user wants to be informed, send it out there
|
|
if (("$level" <= "$display")); then
|
|
|
|
# send it to notification daemon if libnotify exists
|
|
if command -v notify-send >/dev/null; then
|
|
local urgency
|
|
case "$level" in
|
|
0) urgency="critical" ;;
|
|
1) urgency="normal" ;;
|
|
2 | *) urgency="low" ;;
|
|
esac
|
|
notify-send --urgency="$urgency" "$(tr '[:lower:]' '[:upper:]' <<<\["$application"])" "$@"
|
|
|
|
fi
|
|
# otherwise just print it out
|
|
printf "%b%-15s %s \u001b[0m\n" "$color" "$(tr '[:lower:]' '[:upper:]' <<<\["$application"])" "$@"
|
|
fi
|
|
|
|
}
|