[dpkg] 24/27: dpkg-maintscript-helper: Add color support

Mattia Rizzolo mattia at debian.org
Mon Oct 23 18:10:29 UTC 2017


This is an automated email from the git hooks/post-receive script.

mattia pushed a commit to branch master
in repository dpkg.

commit 8998ff736606402771745ff27dc43b2cc1165b09
Author: Guillem Jover <guillem at debian.org>
Date:   Sun Oct 22 17:29:10 2017 +0200

    dpkg-maintscript-helper: Add color support
    
    The initial color support only covered the C and perl programs, and
    missed this shell script.
---
 debian/changelog                   |  1 +
 man/dpkg-maintscript-helper.man    |  8 +++++
 scripts/dpkg-maintscript-helper.sh | 64 +++++++++++++++++++++++++++++++++++---
 3 files changed, 69 insertions(+), 4 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index d5fd0a0..e299527 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -11,6 +11,7 @@ dpkg (1.19.1) UNRELEASED; urgency=medium
     dpkg-buildpackage, instead of changing directory back and forth.
   * Setup and check rootcommand in dpkg-buildpackage only if it is going to
     be needed. Reported by Niels Thykier <niels at thykier.net>.
+  * Add color support to dpkg-maintscript-helper (a shell script).
   * Perl modules:
     - Check that $tarname is defined before use in Dpkg::Source::Package::V1.
       Thanks to Christoph Biedl <debian.axhn at manchmal.in-ulm.de>.
diff --git a/man/dpkg-maintscript-helper.man b/man/dpkg-maintscript-helper.man
index 0d608ab..a927b9f 100644
--- a/man/dpkg-maintscript-helper.man
+++ b/man/dpkg-maintscript-helper.man
@@ -254,6 +254,14 @@ The command \fBsupports\fP will return 0 on success, 1 otherwise. The
 \fBsupports\fP command will check if the environment variables as set
 by dpkg and required by the script are present, and will consider it a
 failure in case the environment is not sufficient.
+.
+.SH ENVIRONMENT
+.TP
+.B DPKG_COLORS
+Sets the color mode (since dpkg 1.19.1).
+The currently accepted values are: \fBauto\fP (default), \fBalways\fP and
+\fBnever\fP.
+.
 .SH SEE ALSO
 .ad l
 .BR dh_installdeb (1).
diff --git a/scripts/dpkg-maintscript-helper.sh b/scripts/dpkg-maintscript-helper.sh
index 378d03c..2e5d207 100755
--- a/scripts/dpkg-maintscript-helper.sh
+++ b/scripts/dpkg-maintscript-helper.sh
@@ -537,19 +537,72 @@ symlink_match()
 	[ "$(readlink -f "$SYMLINK")" = "$SYMLINK_TARGET" ]
 }
 
+# Standard ANSI colors and attributes.
+COLOR_NORMAL=''
+COLOR_RESET=''
+COLOR_BOLD=''
+COLOR_BLACK=''
+COLOR_RED=''
+COLOR_GREEN=''
+COLOR_YELLOW=''
+COLOR_BLUE=''
+COLOR_MAGENTA=''
+COLOR_CYAN=''
+COLOR_WHITE=''
+COLOR_BOLD_BLACK=''
+COLOR_BOLD_RED=''
+COLOR_BOLD_GREEN=''
+COLOR_BOLD_YELLOW=''
+COLOR_BOLD_BLUE=''
+COLOR_BOLD_MAGENTA=''
+COLOR_BOLD_CYAN=''
+COLOR_BOLD_WHITE=''
+
+setup_colors()
+{
+	: ${DPKG_COLORS=auto}
+
+	case "$DPKG_COLORS" in
+	auto)
+		if [ -t 1 ]; then
+			USE_COLORS=yes
+		else
+			USE_COLORS=no
+		fi
+		;;
+	always)
+		USE_COLORS=yes
+		;;
+	*)
+		USE_COLORS=no
+		;;
+	esac
+
+	if [ $USE_COLORS = yes ]; then
+		COLOR_PROG="$COLOR_BOLD"
+		COLOR_INFO="$COLOR_GREEN"
+		COLOR_NOTICE="$COLOR_YELLOW"
+		COLOR_WARN="$COLOR_BOLD_YELLOW"
+		COLOR_ERROR="$COLOR_BOLD_RED"
+	else
+		COLOR_RESET=""
+	fi
+	FMT_PROG="$COLOR_PROG$PROGNAME$COLOR_RESET"
+}
+
 debug() {
 	if [ -n "$DPKG_DEBUG" ]; then
-		echo "DEBUG: $PROGNAME: $*" >&2
+		echo "DEBUG: $FMT_PROG: $*" >&2
 	fi
 }
 
 error() {
-	echo "$PROGNAME: error: $*" >&2
+	echo "$FMT_PROG: ${COLOR_ERROR}error${COLOR_RESET}: $*" >&2
 	exit 1
 }
 
 warning() {
-	echo "$PROGNAME: warning: $*" >&2
+	echo "$FMT_PROG: ${COLOR_WARN}warning${COLOR_RESET}: $*" >&2
 }
 
 usage() {
@@ -576,7 +629,7 @@ END
 }
 
 badusage() {
-	echo "$PROGNAME: error: $1" >&2
+	echo "$FMT_PROG: ${COLOR_ERROR}error${COLOR_RESET}: $1" >&2
 	echo >&2
 	echo "Use '$PROGNAME help' for program usage information." >&2
 	exit 1
@@ -587,6 +640,9 @@ set -e
 
 PROGNAME=$(basename "$0")
 version="unknown"
+
+setup_colors
+
 command="$1"
 [ $# -gt 0 ] || badusage "missing command"
 shift

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/reproducible/dpkg.git



More information about the Reproducible-commits mailing list