# Fancy output is for terminal output only. [[ -t 1 ]] || return ### Fancy Logging/Error reporting function report_err { print_prefixed "${C_PREFIX}" "${C_HIGHLIGHT}$*" } function report_notice { print_prefixed "${C_PREFIX}" "$*" } function report_try { printf "${C_PREFIX}${PREFIX_BUSY}${C_NORMAL} %s " "$*" report_status " BUSY " "${C_BUSY}" REPORT_TRYING=1 } function report_fail { if [[ -n "$*" ]]; then if [[ -n "$REPORT_TRYING" ]]; then report_append "$*" report_status "FAILED" "${C_FAILED}" $'\n' REPORT_TRYING= else print_prefixed "${C_FAILED}" "${C_HIGHLIGHT}$*" fi elif [[ -n "$REPORT_TRYING" ]]; then report_status "FAILED" "${C_FAILED}" $'\n' REPORT_TRYING= fi } function report_success { if [[ -n "$*" ]]; then if [[ -n "$REPORT_TRYING" ]]; then report_append "$*" report_status " DONE " "${C_DONE}" $'\n' REPORT_TRYING= else print_prefixed "${C_DONE}" "$*" fi elif [[ -n "$REPORT_TRYING" ]]; then report_status " DONE " "${C_DONE}" $'\n' REPORT_TRYING= fi } function report_append { printf -- "${RESTORE_POSITION}${C_PREFIX}-${C_NORMAL} %s " "$*" } function report_status { local status=$1 color=$2 shift 2 printf "${CURSOR_STATUS} [${color}%s${C_NORMAL}] %s" "$status" "$*" } function print_prefixed { local c_prefix=$1 shift printf "${c_prefix}${PREFIX_ATTENTION}${C_NORMAL} %s${C_NORMAL}\n" "$*" } SAVE_POSITION=$(tput sc) RESTORE_POSITION=$(tput rc) COLUMNS=$(tput cols) (( COLUMNS == 0 )) && COLUMNS=80 CURSOR_STATUS=${SAVE_POSITION}$(tput hpa $(( COLUMNS - 10 )) ) C_NORMAL=$(tput sgr0) C_HIGHLIGHT=${C_NORMAL}$(tput bold) C_PREFIX=${C_HIGHLIGHT}$(tput setaf 4) # blue C_BUSY=${C_NORMAL}$(tput setaf 6) # cyan C_FAILED=${C_HIGHLIGHT}$(tput setaf 1) # red C_DONE=${C_HIGHLIGHT}$(tput setaf 2) # green PREFIX_BUSY="::" PREFIX_ATTENTION=" >" # vim: ft=sh ts=4 et sw=4: