79 lines
1.9 KiB
Bash
79 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
|
# prompt-colors.sh
|
|
#
|
|
# source this file to get color definitions
|
|
# are also printed to STDERR.
|
|
|
|
define_color_names() {
|
|
|
|
ColorNames=( Black Red Green Yellow Blue Magenta Cyan White )
|
|
FgColors=( 30 31 32 33 34 35 36 37 )
|
|
BgColors=( 40 41 42 43 44 45 46 47 )
|
|
|
|
local AttrNorm=0
|
|
local AttrBright=1
|
|
local AttrDim=2
|
|
local AttrUnder=4
|
|
local AttrBlink=5
|
|
local AttrRev=7
|
|
local AttrHide=8
|
|
|
|
# define "BoldCOLOR", "BrightCOLOR", and "DimCOLOR" names
|
|
|
|
# _map_colors ATTRNAME ATTRVALUE
|
|
#
|
|
# Defines three names for every color, attribute combintaion:
|
|
# {ATTRNAME}{COLORNAME}
|
|
# {ATTRNAME}{COLORNAME}Fg
|
|
# {ATTRNAME}{COLORNAME}Bg
|
|
#
|
|
# Example: BoldRed, BoldRedFg, BoldRedBg
|
|
|
|
_map_colors() {
|
|
local x=0
|
|
local attrname="${1}"
|
|
local attrcode="${2}"
|
|
while (( x < 8 )) ; do
|
|
local colorname="${ColorNames[x]}"
|
|
local fgcolorcode="${FgColors[x]}"
|
|
local bgcolorcode="${BgColors[x]}"
|
|
longcolorname="${attrname}${colorname}"
|
|
_def_color "${longcolorname}" "${attrcode}" "${fgcolorcode}"
|
|
_def_color "${longcolorname}Fg" "${attrcode}" "${fgcolorcode}"
|
|
_def_color "${longcolorname}Bg" "${attrcode}" "${bgcolorcode}"
|
|
(( x++ ))
|
|
done
|
|
}
|
|
|
|
# _term_color [ N | N M ]
|
|
_term_color() {
|
|
local cv
|
|
if [[ "${#}" -gt 1 ]]; then
|
|
cv="${1};${2}"
|
|
else
|
|
cv="${1}"
|
|
fi
|
|
echo "\[\033[${cv}m\]"
|
|
}
|
|
|
|
# def_color NAME ATTRCODE COLORCODE
|
|
_def_color() {
|
|
local def="${1}=\"\`_term_color ${2} ${3}\`\""
|
|
eval "${def}"
|
|
}
|
|
|
|
_map_colors Bold ${AttrBright}
|
|
_map_colors Bright ${AttrBright}
|
|
_map_colors Dim ${AttrDim}
|
|
_map_colors '' ${AttrNorm}
|
|
|
|
_def_color IntenseBlack 0 90
|
|
_def_color ResetColor 0 0
|
|
|
|
}
|
|
|
|
# do the color definitions only once
|
|
if [[ -z "${ColorNames+x}" || "${#ColorNames[*]}" = 0 || -z "${IntenseBlack:+x}" || -z "${ResetColor:+x}" ]]; then
|
|
define_color_names
|
|
fi
|