#!/bin/bash

# thanks Carl

setcolor () {
  local m c=3 # default foreground
  while [[ $1 ]]; do
  case $1 in
    normal         ) m+=";0"     ; shift ;;
    bold           ) m+=";1"     ; shift ;;
    dim            ) m+=";2"     ; shift ;;
    ul|underline   ) m+=";4"     ; shift ;;
    rev|reverse    ) m+=";7"     ; shift ;;
    fg             ) c=3         ; shift ;;
    bg             ) c=4         ; shift ;;
    bright         ) ((c+=6))    ; shift ;;
    0|black        ) m+=";${c}0" ; shift ;;
    1|red          ) m+=";${c}1" ; shift ;;
    2|green        ) m+=";${c}2" ; shift ;;
    3|brown|yellow ) m+=";${c}3" ; shift ;;
    4|blue         ) m+=";${c}4" ; shift ;;
    5|violet|purple|magenta )
                     m+=";${c}5" ; shift ;;
    6|teal|cyan    ) m+=";${c}6" ; shift ;;
    7|white        ) m+=";${c}7" ; shift ;;
    * ) echo "what's $1?" >&2; return 1;
  esac
  done
  echo -ne "\e[${m}m"
}

setcolor "$@"

