mirror of
https://github.com/denisidoro/navi
synced 2024-11-25 04:50:21 +00:00
103 lines
2.4 KiB
Bash
103 lines
2.4 KiB
Bash
|
#!/usr/bin/env bash
|
||
|
|
||
|
_export_colors() {
|
||
|
if ! ${DOT_COLORS_EXPORTED:-false}; then
|
||
|
if [ -z ${TERM:-} ] || [ $TERM = "dumb" ]; then
|
||
|
bold=""
|
||
|
underline=""
|
||
|
freset=""
|
||
|
purple=""
|
||
|
red=""
|
||
|
green=""
|
||
|
tan=""
|
||
|
blue=""
|
||
|
else
|
||
|
bold=$(tput bold)
|
||
|
underline=$(tput sgr 0 1)
|
||
|
freset=$(tput sgr0)
|
||
|
purple=$(tput setaf 171)
|
||
|
red=$(tput setaf 1)
|
||
|
green=$(tput setaf 76)
|
||
|
tan=$(tput setaf 3)
|
||
|
blue=$(tput setaf 38)
|
||
|
fi
|
||
|
|
||
|
log_black=30
|
||
|
log_red=31
|
||
|
log_green=32
|
||
|
log_yellow=33
|
||
|
log_blue=34
|
||
|
log_purple=35
|
||
|
log_cyan=36
|
||
|
log_white=37
|
||
|
|
||
|
log_regular=0
|
||
|
log_bold=1
|
||
|
log_underline=4
|
||
|
|
||
|
readonly DOT_COLORS_EXPORTED=true
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
log::color() {
|
||
|
_export_colors
|
||
|
local bg=false
|
||
|
case "$@" in
|
||
|
*reset*) echo "\e[0m"; exit 0 ;;
|
||
|
*black*) color=$log_black ;;
|
||
|
*red*) color=$log_red ;;
|
||
|
*green*) color=$log_green ;;
|
||
|
*yellow*) color=$log_yellow ;;
|
||
|
*blue*) color=$log_blue ;;
|
||
|
*purple*) color=$log_purple ;;
|
||
|
*cyan*) color=$log_cyan ;;
|
||
|
*white*) color=$log_white ;;
|
||
|
esac
|
||
|
case "$@" in
|
||
|
*regular*) mod=$log_regular ;;
|
||
|
*bold*) mod=$log_bold ;;
|
||
|
*underline*) mod=$log_underline ;;
|
||
|
esac
|
||
|
case "$@" in
|
||
|
*background*) bg=true ;;
|
||
|
*bg*) bg=true ;;
|
||
|
esac
|
||
|
|
||
|
if $bg; then
|
||
|
echo "\e[${color}m"
|
||
|
else
|
||
|
echo "\e[${mod:-$log_regular};${color}m"
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
if [ -z ${LOG_FILE+x} ]; then
|
||
|
readonly LOG_FILE="/tmp/$(basename "$0").log"
|
||
|
fi
|
||
|
|
||
|
_log() {
|
||
|
local template=$1
|
||
|
shift
|
||
|
if ${log_to_file:-false}; then
|
||
|
echo -e $(printf "$template" "$@") | tee -a "$LOG_FILE" >&2
|
||
|
else
|
||
|
echo -e $(printf "$template" "$@")
|
||
|
fi
|
||
|
}
|
||
|
|
||
|
_header() {
|
||
|
local TOTAL_CHARS=60
|
||
|
local total=$TOTAL_CHARS-2
|
||
|
local size=${#1}
|
||
|
local left=$((($total - $size) / 2))
|
||
|
local right=$(($total - $size - $left))
|
||
|
printf "%${left}s" '' | tr ' ' =
|
||
|
printf " $1 "
|
||
|
printf "%${right}s" '' | tr ' ' =
|
||
|
}
|
||
|
|
||
|
log::header() { _export_colors && _log "\n${bold}${purple}$(_header "$1")${freset}\n"; }
|
||
|
log::success() { _export_colors && _log "${green}✔ %s${freset}\n" "$@"; }
|
||
|
log::error() { _export_colors && _log "${red}✖ %s${freset}\n" "$@"; }
|
||
|
log::warning() { _export_colors && _log "${tan}➜ %s${freset}\n" "$@"; }
|
||
|
log::note() { _export_colors && _log "${blue}➜ %s${freset}\n" "$@"; }
|