Implement a logger for messages
This commit is contained in:
parent
4a89089856
commit
e5bcd62c19
1 changed files with 43 additions and 7 deletions
50
rowbot
50
rowbot
|
@ -1,5 +1,36 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
###
|
||||
# logger
|
||||
###
|
||||
|
||||
declare -A levels=(
|
||||
[debug]=1 [info]=2
|
||||
[warn]=3 [error]=4
|
||||
)
|
||||
|
||||
log() {
|
||||
if [[ -v LEVEL ]] && (( levels[$level] <= levels[$LEVEL] )); then
|
||||
printf "%s: $1\n" "${LEVEL^^}" "${@:2}"
|
||||
fi
|
||||
}
|
||||
|
||||
debug() {
|
||||
LEVEL=debug log "$@"
|
||||
}
|
||||
|
||||
info() {
|
||||
LEVEL=info log "$@"
|
||||
}
|
||||
|
||||
warn() {
|
||||
LEVEL=warn log "$@"
|
||||
}
|
||||
|
||||
error() {
|
||||
LEVEL=error log "$@"
|
||||
}
|
||||
|
||||
###
|
||||
# argument parser for parsing arguments
|
||||
##
|
||||
|
@ -35,6 +66,7 @@ done
|
|||
# default config
|
||||
##
|
||||
|
||||
level=${opts[log-level]:-info}
|
||||
server=${opts[server]:-irc.libera.chat}
|
||||
tls=${opts[tls]:-no}
|
||||
|
||||
|
@ -78,25 +110,29 @@ recv() {
|
|||
###
|
||||
|
||||
while recv line; do
|
||||
params=( ) has_words=no orig_line=$line
|
||||
params=( )
|
||||
has_words=no
|
||||
orig_line=$line
|
||||
|
||||
if [[ $line = :* ]]; then
|
||||
if [[ ${line:0:1} = : ]]; then
|
||||
src=${line%% *} src=${src#:}
|
||||
line=${line#:"$src"} line=${line# }
|
||||
from=${src%@*} ident=${from#*!}
|
||||
from=${from%!*} host=${src#*@}
|
||||
fi
|
||||
|
||||
cmd=${line%% *} line=${line#"$cmd"} line=${line# }
|
||||
cmd=${line%% *}
|
||||
line=${line#"$cmd"}
|
||||
line=${line# }
|
||||
|
||||
while [[ $line ]]; do
|
||||
if [[ $line = :* ]]; then
|
||||
if [[ ${line:0:1} = : ]]; then
|
||||
params+=("${line:1}")
|
||||
line=""
|
||||
has_words=yes
|
||||
else
|
||||
params=${line%% *}
|
||||
params+=( "$param" )
|
||||
param=${line%% *}
|
||||
params+=("$param")
|
||||
line=${line#"$param"} line=${line# }
|
||||
fi
|
||||
done
|
||||
|
@ -110,6 +146,6 @@ while recv line; do
|
|||
if hash "on_${cmd^^}" 2>/dev/null; then
|
||||
"on_${cmd^^}"
|
||||
else
|
||||
declare -p line
|
||||
warn "unhandled line: %s" "$orig_line"
|
||||
fi
|
||||
done
|
||||
|
|
Loading…
Reference in a new issue