#!/usr/bin/env false readonly LOGLEVEL_VERBOSE=0 readonly LOGLEVEL_DEBUG=1 readonly LOGLEVEL_INFO=2 readonly LOGLEVEL_WARN=3 readonly LOGLEVEL_ERROR=4 __logparselevel() { if [ -z "${LOG_LEVEL:-}" ]; then echo $LOGLEVEL_INFO elif [ "${LOG_LEVEL}" = "VERBOSE" ]; then echo $LOGLEVEL_VERBOSE elif [ "${LOG_LEVEL}" = "DEBUG" ]; then echo $LOGLEVEL_DEBUG elif [ "${LOG_LEVEL}" = "INFO" ]; then echo $LOGLEVEL_INFO elif [ "${LOG_LEVEL}" = "WARN" ]; then echo $LOGLEVEL_WARN elif [ "${LOG_LEVEL}" = "ERROR" ]; then echo $LOGLEVEL_ERROR else echo $LOGLEVEL_INFO fi } __logprintraw() { local formated_msg="$1" >&2 echo "${formated_msg}" } __logprint() { local level_fmt="$1" local msg="$2" local curr_time; curr_time="[$(date)]" local formated_msg="${curr_time}${level_fmt}: ${msg}" __logprintraw "${formated_msg}" } logcmd() { if [ "$(__logparselevel)" -le "$LOGLEVEL_DEBUG" ]; then echo "+ $*" { "$@" ;} else { "$@" >/dev/null 2>&1;} fi } log_expand_if_verbose() { if [ "$(__logparselevel)" -le "$LOGLEVEL_VERBOSE" ]; then printf "%s" "$1" fi } logd() { if [ "$(__logparselevel)" -le "$LOGLEVEL_DEBUG" ]; then __logprint "[DEBUG]" "$1" fi } logdraw() { if [ "$(__logparselevel)" -le "$LOGLEVEL_DEBUG" ]; then __logprint "[DEBUG]" "raw print:" __logprintraw "$1" fi } logi() { if [ "$(__logparselevel)" -le "$LOGLEVEL_INFO" ]; then __logprint "[INFO ]" "$1" fi } logw() { if [ "$(__logparselevel)" -le "$LOGLEVEL_WARN" ]; then __logprint "[WARN ]" "$1" fi } loge() { if [ "$(__logparselevel)" -le "$LOGLEVEL_ERROR" ]; then __logprint "[ERROR]" "$1" fi }