From 65650f2cdb04629810cb7545e35ad8af9e25b072 Mon Sep 17 00:00:00 2001 From: William Giokas <1007380@gmail.com> Date: Mon, 4 Mar 2013 02:08:42 -0600 Subject: scripts: Add color to library/output_format.sh Use the same colors as makepkg in messages. Add in the 'plain' function as well. To use the colors, you need to include the term_colors.sh file, or add definitions for the colors explicitly. Signed-off-by: William Giokas <1007380@gmail.com> Signed-off-by: Allan McRae --- scripts/library/README | 9 ++++++--- scripts/library/output_format.sh | 16 +++++++++++----- scripts/library/term_colors.sh | 21 +++++++++++++++++++++ 3 files changed, 38 insertions(+), 8 deletions(-) create mode 100644 scripts/library/term_colors.sh diff --git a/scripts/library/README b/scripts/library/README index 0fa0f847..c28ebc60 100644 --- a/scripts/library/README +++ b/scripts/library/README @@ -2,9 +2,9 @@ This folder contains code snippets that can be reused by multiple scripts. A brief description of each file follows. output_format.sh: -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' +Provides basic output formatting functions with levels 'plain', '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. @@ -39,3 +39,6 @@ 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: +Contains some common color settings for output_format.sh. diff --git a/scripts/library/output_format.sh b/scripts/library/output_format.sh index 9e890e76..18f1f588 100644 --- a/scripts/library/output_format.sh +++ b/scripts/library/output_format.sh @@ -1,21 +1,27 @@ +plain() { + (( QUIET )) && return + local mesg=$1; shift + printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1 +} + msg() { (( QUIET )) && return local mesg=$1; shift - printf "==> ${mesg}\n" "$@" >&1 + printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1 } msg2() { (( QUIET )) && return local mesg=$1; shift - printf " -> ${mesg}\n" "$@" >&1 + printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1 } 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 00000000..a675247c --- /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 -- cgit v1.2.3-70-g09d2