Just add to your .bashrc
or .bash_profile
as:
source ~/bin/mvn-color.sh
#!/usr/bin/env bash | |
# Formatting constants | |
export BOLD=`tput bold` | |
export UNDERLINE_ON=`tput smul` | |
export UNDERLINE_OFF=`tput rmul` | |
export TEXT_BLACK=`tput setaf 0` | |
export TEXT_RED=`tput setaf 1` | |
export TEXT_GREEN=`tput setaf 2` | |
export TEXT_YELLOW=`tput setaf 3` | |
export TEXT_BLUE=`tput setaf 4` | |
export TEXT_MAGENTA=`tput setaf 5` | |
export TEXT_CYAN=`tput setaf 6` | |
export TEXT_WHITE=`tput setaf 7` | |
export BACKGROUND_BLACK=`tput setab 0` | |
export BACKGROUND_RED=`tput setab 1` | |
export BACKGROUND_GREEN=`tput setab 2` | |
export BACKGROUND_YELLOW=`tput setab 3` | |
export BACKGROUND_BLUE=`tput setab 4` | |
export BACKGROUND_MAGENTA=`tput setab 5` | |
export BACKGROUND_CYAN=`tput setab 6` | |
export BACKGROUND_WHITE=`tput setab 7` | |
export RESET_FORMATTING=`tput sgr0` | |
export EXCLUDING_FORMATTED="/^"$'\E'"\[([0-9]{1,2}(;[0-9]{1,2})*)?m/!" | |
export INFO_DIVIDER="s/(\[INFO *\]\ [-<>=].*|[-<>=]{3,})/${TEXT_BLUE}${BOLD}\1${RESET_FORMATTING}/g" | |
export INFO_BRACKET="s/(\[INFO *\]\ .*)([[{].*[]}]|[[{]$)/\1${RESET_FORMATTING}${BOLD}\2${RESET_FORMATTING}/g" | |
export INFO_EXECUTION="s/(\[INFO *\]\ [-<>=]*\ )([^:\ ]*)(:[0-9.]*)(-SNAPSHOT)?(:[^\ ]*\ )(\(.*\)\ )*([@])*(\ [^\ ][^\ ]*)*(\ [-<>=]*)/${TEXT_BLUE}${BOLD}\1${RESET_FORMATTING}${TEXT_YELLOW}${BOLD}\2${RESET_FORMATTING}${TEXT_WHITE}${BOLD}\3\4${RESET_FORMATTING}${TEXT_CYAN}${BOLD}\5${RESET_FORMATTING}${TEXT_CYAN}\6${RESET_FORMATTING}${TEXT_YELLOW}\7${RESET_FORMATTING}${TEXT_BLUE}${BOLD}\8${RESET_FORMATTING}/g" | |
export INFO_SUCCESS="s/(\[INFO *\]\ BUILD SUCCESS)/${BOLD}${TEXT_GREEN}\1${RESET_FORMATTING}/g" | |
export INFO_FAILURE="s/(\[INFO *\]\ BUILD FAILURE)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}/g" | |
export INFO_DEPENDENCY_TREE="s/(\[INFO *\]\ [\|\+\ \\\-]*[\\w\ -]*)([^:\ ]*):([^:\ ]*):([^0-9]*)*(:[^:]*[0-9][^:]*):*([^:]*)*/${TEXT_BLACK}${BOLD}\1${RESET_FORMATTING}${TEXT_YELLOW}\2${RESET_FORMATTING} : ${TEXT_YELLOW}${BOLD}\3${RESET_FORMATTING} : \4${RESET_FORMATTING} : ${TEXT_WHITE}${BOLD}v\5${RESET_FORMATTING} : ${TEXT_BLUE}${BOLD}\6${RESET_FORMATTING}/g" | |
export INFO_DEPENDENCY_MENTION="${EXCLUDING_FORMATTED} s/(\[INFO *\]\ .*\ )([^:]*:)?([^:]*:)?([0-9\.]*)(.*)*/${TEXT_BLACK}${BOLD}\1${RESET_FORMATTING}${TEXT_YELLOW}\2${RESET_FORMATTING}${TEXT_YELLOW}${BOLD}\3${RESET_FORMATTING}${TEXT_WHITE}${BOLD}\4${RESET_FORMATTING}${TEXT_BLACK}${BOLD}\5/g" | |
export WARNING_BRACKET="s/(\[WARNING\].*)/${TEXT_YELLOW}\1${RESET_FORMATTING}/g" | |
export WARNING_LOWER="s/(\[warn *\].*|\[WARN *\].*)/${TEXT_YELLOW}\1${RESET_FORMATTING}/g" | |
export WARNING_MSG="s/(\[INFO *\]\ WARNING:.*)/${TEXT_YELLOW}\1${RESET_FORMATTING}/g" | |
export ERROR_MSG="s/(\[ERROR *\].*)/${BOLD}${TEXT_RED}\1${RESET_FORMATTING}/g" | |
export PATH_PACKAGE="s/([^,\ :]*[/.][^,\ :][^,\ ]*)/${BOLD}${TEXT_WHITE}\1${RESET_FORMATTING}/g" | |
export TEST_RESULTS="s/Tests run: ([^,]*), Failures: ([^,]*), Errors: ([^,]*), Skipped: ([^,]*)/${BOLD}${TEXT_GREEN}Tests run: \1${RESET_FORMATTING}, Failures: ${BOLD}${TEXT_RED}\2${RESET_FORMATTING}, Errors: ${BOLD}${TEXT_RED}\3${RESET_FORMATTING}, Skipped: ${BOLD}${TEXT_YELLOW}\4${RESET_FORMATTING}/g" | |
export NO_TAG="${EXCLUDING_FORMATTED} s/^([^[])/${RESET_FORMATTING}\1/g" | |
# Wrapper function for Maven's mvn command. | |
mvn-color() | |
{ | |
# Filter mvn output using sed | |
LANG=C | |
mvn $@ | sed -E \ | |
-e "${INFO_DIVIDER}" \ | |
-e "${INFO_BRACKET}" \ | |
-e "${INFO_EXECUTION}" \ | |
-e "${INFO_SUCCESS}" \ | |
-e "${INFO_FAILURE}" \ | |
-e "${PATH_PACKAGE}" \ | |
-e "${INFO_DEPENDENCY_TREE}" \ | |
-e "${INFO_DEPENDENCY_MENTION}" \ | |
-e "${WARNING_BRACKET}" \ | |
-e "${WARNING_LOWER}" \ | |
-e "${WARNING_MSG}" \ | |
-e "${ERROR_MSG}" \ | |
-e "${TEST_RESULTS}" \ | |
-e "${NO_TAG}" | |
# Make sure formatting is reset | |
echo -ne ${RESET_FORMATTING} | |
} | |
mvn-nocolor() | |
{ | |
mvn $@ | |
} | |
# Override the mvn command with the colorized one. | |
alias mvn="mvn-color" |