#!/bin/bash
#########################################################
#                                                       #
# This is BashStyle-NG                                  #
#                                                       #
# Licensed under GNU GENERAL PUBLIC LICENSE v3          #
#                                                       #
# Copyright Christopher Roy Bratušek                    #
#                                                       #
#########################################################

dbg_msg "$(eval_gettext "BashStyle-NG Setting:")" Colors "$(eval_gettext "On")"
dbg_msg "$(eval_gettext "BashStyle-NG Setting:")" Color-Style "$(ini_get color_style)"

colors=(black red green yellow blue magenta cyan grey white coldblue
    smoothblue iceblue turqoise smoothgreen winered brown silver ocher
    orange purple pink cream)

ecolors=(eblack ered egreen eyellow eblue emagenta ecyan egrey ewhite ecoldblue
    esmoothblue eiceblue eturqoise esmoothgreen ewinered ebrown esilver eocher
    eorange epurple epink ecream)

color_style=$(ini_get color_style)

case ${color_style} in
    bright ) style="01" ;;
    normal ) style="0" ;;
    inverted ) style="7" ;;
    dimmed ) style="02" ;;
    underlined ) style="04" ;;
esac

black="\[\033[${style};30m\]"
red="\[\033[${style};31m\]"
green="\[\033[${style};32m\]"
yellow="\[\033[${style};33m\]"
blue="\[\033[${style};34m\]"
magenta="\[\033[${style};35m\]"
cyan="\[\033[${style};36m\]"
grey="\[\033[${style};37m\]"
white="\[\033[${style};97m\]"

eblack="\033[${style};30m"
ered="\033[${style};31m"
egreen="\033[${style};32m"
eyellow="\033[${style};33m"
eblue="\033[${style};34m"
emagenta="\033[${style};35m"
ecyan="\033[${style};36m"
egrey="\033[${style};37m"
ewhite="\033[${style};97m"

if [[ ${TERM} != *xterm*color* ]]; then
    coldblue=${blue}
    smoothblue=${blue}
    iceblue=${blue}
    turqoise=${cyan}
    smoothgreen=${green}
    winered=${red}
    brown=${yellow}
    silver=${white}
    ocher=${yellow}
    orange=${yellow}
    purple=${magenta}
    pink=${magenta}
    cream=${magenta}

    ecoldblue=${eblue}
    esmoothblue=${eblue}
    eiceblue=${eblue}
    eturqoise=${ecyan}
    esmoothgreen=${egreen}
    ewinered=${ered}
    ebrown=${eyellow}
    esilver=${ewhite}
    eocher=${eyellow}
    eorange=${eyellow}
    epurple=${emagenta}
    epink=${emagenta}
    ecream=${emagenta}
else
    coldblue="\[\033[${style};38;5;33m\]"
    smoothgreen="\[\033[${style};38;5;42m\]"
    iceblue="\[\033[${style};38;5;45m\]"
    turqoise="\[\033[${style};38;5;50m\]"
    purple="\[\033[${style};38;5;92m\]"
    smoothblue="\[\033[${style};38;5;111m\]"
    winered="\[\033[${style};38;5;125m\]"
    brown="\[\033[${style};38;5;130m\]"
    ocher="\[\033[${style};38;5;136m\]"
    pink="\[\033[${style};38;5;200m\]"
    cream="\[\033[${style};38;5;218m\]"
    orange="\[\033[${style};38;5;202m\]"
    silver="\[\033[${style};38;5;245m\]"

    ecoldblue="\033[${style};38;5;33m"
    esmoothgreen="\033[${style};38;5;42m"
    eiceblue="\033[${style};38;5;45m"
    eturqoise="\033[${style};38;5;50m"
    epurple="\033[${style};38;5;92m"
    esmoothblue="\033[${style};38;5;111m"
    ewinered="\033[${style};38;5;125m"
    ebrown="\033[${style};38;5;130m"
    eocher="\033[${style};38;5;136m"
    epink="\033[${style};38;5;200m"
    ecream="\033[${style};38;5;218m"
    eorange="\033[${style};38;5;202m"
    esilver="\033[${style};38;5;245m"
fi

if [[ $(ini_get dark_terminal) == True ]]; then
    black=${white}
    eblack=${ewhite}
else    white=${black}
    ewhite=${eblack}
fi

pcolors=(user host date time wdir font separator uptime ps ps0 ps2 ps3 ps4)

for color in "${pcolors[@]}"; do
    eval color_"${color}"="$(ini_get color_"${color}")"
    temp=$(ini_get color_"${color}")
    eval ecolor_"${color}"="${temp/\$/\$e}"
done

for color in banner mkdir empty; do
    temp=$(ini_get color_cd_"${color}")
    eval ccolor_"${color}"="${temp/\$/\$e}"
done

for color in "${ecolors[@]}"; do
    export color
done

unset temp ecolors pcolors color_style

if [[ $(ini_get use_gcc_colors) == True ]]; then
    GCC_COLORS="error=$(ini_get gcc_color_error):warning=$(ini_get gcc_color_warn):note=$(ini_get gcc_color_notes):caret=$(ini_get gcc_color_caret):locus=$(ini_get gcc_color_locus):quote=$(ini_get gcc_color_quote)"
    export GCC_COLORS
else    unset GCC_COLORS
fi
