241 lines
5.0 KiB
Bash
241 lines
5.0 KiB
Bash
#!/bin/bash
|
|
|
|
function __make_ansi {
|
|
echo "\[\e[$1m\]"
|
|
}
|
|
|
|
function __make_echo {
|
|
echo "\033[$1m"
|
|
}
|
|
|
|
|
|
function __reset {
|
|
echo "0${1:+;$1}"
|
|
}
|
|
|
|
function __bold {
|
|
echo "${1:+$1;}1"
|
|
}
|
|
|
|
function __faint {
|
|
echo "${1:+$1;}2"
|
|
}
|
|
|
|
function __italic {
|
|
echo "${1:+$1;}3"
|
|
}
|
|
|
|
function __underline {
|
|
echo "${1:+$1;}4"
|
|
}
|
|
|
|
function __negative {
|
|
echo "${1:+$1;}7"
|
|
}
|
|
|
|
function __crossed {
|
|
echo "${1:+$1;}8"
|
|
}
|
|
|
|
|
|
function __normal_fg {
|
|
echo "3$1"
|
|
}
|
|
|
|
function __normal_bg {
|
|
echo "4$1"
|
|
}
|
|
|
|
function __bright_fg {
|
|
echo "9$1"
|
|
}
|
|
|
|
function __bright_bg {
|
|
echo "10$1"
|
|
}
|
|
|
|
|
|
function __color_black {
|
|
echo "0"
|
|
}
|
|
|
|
function __color_red {
|
|
echo "1"
|
|
}
|
|
|
|
function __color_green {
|
|
echo "2"
|
|
}
|
|
|
|
function __color_yellow {
|
|
echo "3"
|
|
}
|
|
|
|
function __color_blue {
|
|
echo "4"
|
|
}
|
|
|
|
function __color_magenta {
|
|
echo "5"
|
|
}
|
|
|
|
function __color_cyan {
|
|
echo "6"
|
|
}
|
|
|
|
function __color_white {
|
|
echo "7"
|
|
}
|
|
|
|
function __color_rgb {
|
|
r=$1
|
|
g=$2
|
|
b=$3
|
|
|
|
[[ r == g && g == b ]] && echo $(( $r / 11 + 232 )) && return # gray range above 232
|
|
echo "8;5;$(( ($r * 36 + $b * 6 + $g) / 51 + 16 ))"
|
|
}
|
|
|
|
function __color {
|
|
color=$1
|
|
side=${2:-fg}
|
|
mode=${3:-normal}
|
|
echo "$(__${mode}_${side} $(__color_${color} $@))"
|
|
}
|
|
|
|
function __color_parse {
|
|
while [ $# -gt 0 ]
|
|
do
|
|
case "$1" in
|
|
reset|bold|faint|italic|underline|negative|crossed)
|
|
output="$(__$1 $output)"
|
|
shift
|
|
|
|
;;
|
|
|
|
black|red|green|yellow|blue|magenta|cyan|white|rgb)
|
|
color="$1"
|
|
shift
|
|
|
|
case "$1" in
|
|
fg|bg)
|
|
side="$1"
|
|
shift
|
|
|
|
case "$1" in
|
|
normal|bright)
|
|
mode="$1"
|
|
shift
|
|
;;
|
|
esac
|
|
|
|
;;
|
|
esac
|
|
|
|
[[ $color == "rgb" ]] && params="$1 $2 $3" && shift 3
|
|
output=${output:+$output;}$(__color $color $side $mode $params)
|
|
|
|
;;
|
|
|
|
*) shift;;
|
|
esac
|
|
done
|
|
|
|
echo ${output}
|
|
}
|
|
|
|
function color {
|
|
echo $(__make_ansi $(__color_parse $@))
|
|
}
|
|
|
|
function echo_color {
|
|
echo $(__make_echo $(__color_parse $@))
|
|
}
|
|
|
|
black="$(color black)"
|
|
red="$(color red)"
|
|
green="$(color green)"
|
|
yellow="$(color yellow)"
|
|
blue="$(color blue)"
|
|
purple="$(color magenta)"
|
|
cyan="$(color cyan)"
|
|
white="$(color white bold)"
|
|
orange="$(color red fg bright)"
|
|
|
|
bold_black="$(color black bold)"
|
|
bold_red="$(color red bold)"
|
|
bold_green="$(color green bold)"
|
|
bold_yellow="$(color yellow bold)"
|
|
bold_blue="$(color blue bold)"
|
|
bold_purple="$(color magenta bold)"
|
|
bold_cyan="$(color cyan bold)"
|
|
bold_white="$(color white bold)"
|
|
bold_orange="$(color red fg bright bold)"
|
|
|
|
underline_black="$(color black underline)"
|
|
underline_red="$(color red underline)"
|
|
underline_green="$(color green underline)"
|
|
underline_yellow="$(color yellow underline)"
|
|
underline_blue="$(color blue underline)"
|
|
underline_purple="$(color magenta underline)"
|
|
underline_cyan="$(color cyan underline)"
|
|
underline_white="$(color white underline)"
|
|
underline_orange="$(color red fg bright underline)"
|
|
|
|
background_black="$(color black bg)"
|
|
background_red="$(color red bg)"
|
|
background_green="$(color green bg)"
|
|
background_yellow="$(color yellow bg)"
|
|
background_blue="$(color blue bg)"
|
|
background_purple="$(color magenta bg)"
|
|
background_cyan="$(color cyan bg)"
|
|
background_white="$(color white bold bg)"
|
|
background_orange="$(color red bg bright)"
|
|
|
|
normal="$(color reset)"
|
|
reset_color="$(__make_ansi 39)"
|
|
|
|
# These colors are meant to be used with `echo -e`
|
|
echo_black="$(echo_color black)"
|
|
echo_red="$(echo_color red)"
|
|
echo_green="$(echo_color green)"
|
|
echo_yellow="$(echo_color yellow)"
|
|
echo_blue="$(echo_color blue)"
|
|
echo_purple="$(echo_color magenta)"
|
|
echo_cyan="$(echo_color cyan)"
|
|
echo_white="$(echo_color white bold)"
|
|
echo_orange="$(echo_color red fg bright)"
|
|
|
|
echo_bold_black="$(echo_color black bold)"
|
|
echo_bold_red="$(echo_color red bold)"
|
|
echo_bold_green="$(echo_color green bold)"
|
|
echo_bold_yellow="$(echo_color yellow bold)"
|
|
echo_bold_blue="$(echo_color blue bold)"
|
|
echo_bold_purple="$(echo_color magenta bold)"
|
|
echo_bold_cyan="$(echo_color cyan bold)"
|
|
echo_bold_white="$(echo_color white bold)"
|
|
echo_bold_orange="$(echo_color red fg bright bold)"
|
|
|
|
echo_underline_black="$(echo_color black underline)"
|
|
echo_underline_red="$(echo_color red underline)"
|
|
echo_underline_green="$(echo_color green underline)"
|
|
echo_underline_yellow="$(echo_color yellow underline)"
|
|
echo_underline_blue="$(echo_color blue underline)"
|
|
echo_underline_purple="$(echo_color magenta underline)"
|
|
echo_underline_cyan="$(echo_color cyan underline)"
|
|
echo_underline_white="$(echo_color white underline)"
|
|
echo_underline_orange="$(echo_color red fg bright underline)"
|
|
|
|
echo_background_black="$(echo_color black bg)"
|
|
echo_background_red="$(echo_color red bg)"
|
|
echo_background_green="$(echo_color green bg)"
|
|
echo_background_yellow="$(echo_color yellow bg)"
|
|
echo_background_blue="$(echo_color blue bg)"
|
|
echo_background_purple="$(echo_color magenta bg)"
|
|
echo_background_cyan="$(echo_color cyan bg)"
|
|
echo_background_white="$(echo_color white bold bg)"
|
|
echo_background_orange="$(echo_color red bg bright)"
|
|
|
|
echo_normal="$(echo_color reset)"
|
|
echo_reset_color="$(__make_ansi 39)"
|