Use the same colors as makepkg when printing messages using the functions in output_format.sh. Signed-off-by: William Giokas <1007380@gmail.com> --- Originally msg and msg2 printed to stdout, but that messed with makepkgs sed expressions, and they originally printed to sdterr in makepkg, so now they print to the right place. scripts/library/README | 6 +++++- scripts/library/output_format.sh | 18 +++++++++++++----- scripts/library/term_colors.sh | 21 +++++++++++++++++++++ 3 files changed, 39 insertions(+), 6 deletions(-) create mode 100644 scripts/library/term_colors.sh diff --git a/scripts/library/README b/scripts/library/README index 0fa0f84..5f2961c 100644 --- a/scripts/library/README +++ b/scripts/library/README @@ -6,7 +6,7 @@ Provides basic output formatting functions with levels 'msg', 'msg2', 'warning' and 'error'. The 'msg' amd 'msg2' functions print to stdout and can be silenced by defining 'QUIET'. The 'warning' and 'error' functions print to stderr with the appropriate prefix added to the -message. +message. Also includes optional color output. parseopts.sh: A getopt_long-like parser which portably supports longopts and shortopts @@ -39,3 +39,7 @@ as mawk or busybox awk. size_to_human.sh: The reverse of human_to_size, this function takes an integer byte size and prints its in human readable format, with SI prefixes (e.g. MiB, TiB). + +term_colors.sh +Set the terminal colors for the common message formats. Uses the variable +`USE_COLOR` to determine when to be used. diff --git a/scripts/library/output_format.sh b/scripts/library/output_format.sh index 9e890e7..2930200 100644 --- a/scripts/library/output_format.sh +++ b/scripts/library/output_format.sh @@ -1,21 +1,29 @@ +# Common message formats + +plain() { + (( QUIET )) && return + local mesg=$1; shift + printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} + msg() { (( QUIET )) && return local mesg=$1; shift - printf "==> ${mesg}\n" "$@" >&1 + printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 } msg2() { (( QUIET )) && return local mesg=$1; shift - printf " -> ${mesg}\n" "$@" >&1 + printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 } warning() { local mesg=$1; shift - printf "==> $(gettext "WARNING:") ${mesg}\n" "$@" >&2 + printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 } error() { local mesg=$1; shift - printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2 -} \ No newline at end of file + printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2 +} diff --git a/scripts/library/term_colors.sh b/scripts/library/term_colors.sh new file mode 100644 index 0000000..a675247 --- /dev/null +++ b/scripts/library/term_colors.sh @@ -0,0 +1,21 @@ +# check if messages are to be printed using color +unset ALL_OFF BOLD BLUE GREEN RED YELLOW +if [[ -t 2 && ! $USE_COLOR = "n" ]]; then + # prefer terminal safe colored and bold text when tput is supported + if tput setaf 0 &>/dev/null; then + ALL_OFF="$(tput sgr0)" + BOLD="$(tput bold)" + BLUE="${BOLD}$(tput setaf 4)" + GREEN="${BOLD}$(tput setaf 2)" + RED="${BOLD}$(tput setaf 1)" + YELLOW="${BOLD}$(tput setaf 3)" + else + ALL_OFF="\e[1;0m" + BOLD="\e[1;1m" + BLUE="${BOLD}\e[1;34m" + GREEN="${BOLD}\e[1;32m" + RED="${BOLD}\e[1;31m" + YELLOW="${BOLD}\e[1;33m" + fi +fi +readonly ALL_OFF BOLD BLUE GREEN RED YELLOW -- 1.8.2.rc1.24.g06d67b8