12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- #!/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
|