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 <allan@archlinux.org>
This commit is contained in:
William Giokas 2013-03-04 02:08:42 -06:00 committed by Allan McRae
parent e292b1b5a2
commit 65650f2cdb
3 changed files with 38 additions and 8 deletions

View File

@ -2,9 +2,9 @@ This folder contains code snippets that can be reused by multiple
scripts. A brief description of each file follows. scripts. A brief description of each file follows.
output_format.sh: output_format.sh:
Provides basic output formatting functions with levels 'msg', 'msg2', Provides basic output formatting functions with levels 'plain', 'msg',
'warning' and 'error'. The 'msg' amd 'msg2' functions print to stdout 'msg2', 'warning' and 'error'. The 'msg' amd 'msg2' functions print to
and can be silenced by defining 'QUIET'. The 'warning' and 'error' stdout and can be silenced by defining 'QUIET'. The 'warning' and 'error'
functions print to stderr with the appropriate prefix added to the functions print to stderr with the appropriate prefix added to the
message. message.
@ -39,3 +39,6 @@ as mawk or busybox awk.
size_to_human.sh: size_to_human.sh:
The reverse of human_to_size, this function takes an integer byte size and 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). 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.

View File

@ -1,21 +1,27 @@
plain() {
(( QUIET )) && return
local mesg=$1; shift
printf "${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1
}
msg() { msg() {
(( QUIET )) && return (( QUIET )) && return
local mesg=$1; shift local mesg=$1; shift
printf "==> ${mesg}\n" "$@" >&1 printf "${GREEN}==>${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1
} }
msg2() { msg2() {
(( QUIET )) && return (( QUIET )) && return
local mesg=$1; shift local mesg=$1; shift
printf " -> ${mesg}\n" "$@" >&1 printf "${BLUE} ->${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&1
} }
warning() { warning() {
local mesg=$1; shift local mesg=$1; shift
printf "==> $(gettext "WARNING:") ${mesg}\n" "$@" >&2 printf "${YELLOW}==> $(gettext "WARNING:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
} }
error() { error() {
local mesg=$1; shift local mesg=$1; shift
printf "==> $(gettext "ERROR:") ${mesg}\n" "$@" >&2 printf "${RED}==> $(gettext "ERROR:")${ALL_OFF}${BOLD} ${mesg}${ALL_OFF}\n" "$@" >&2
} }

View File

@ -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