summaryrefslogtreecommitdiff
path: root/tool/ifchange
diff options
context:
space:
mode:
Diffstat (limited to 'tool/ifchange')
-rwxr-xr-xtool/ifchange22
1 files changed, 20 insertions, 2 deletions
diff --git a/tool/ifchange b/tool/ifchange
index 488e9db..6a1923c 100755
--- a/tool/ifchange
+++ b/tool/ifchange
@@ -37,11 +37,29 @@ if [ "$temp" = - ]; then
trap 'rm -f "$temp"' 0
fi
+msg_begin= msg_unchanged= msg_updated= msg_reset=
+if [ -t ]; then
+ msg_begin="`tput smso 2>/dev/null`"
+ case "$msg_begin" in
+ ""*m)
+ msg_begin="`echo "$msg_begin" | sed 's/[0-9]*m$//'`"
+ if [ ${TEST_COLORS:+set} ]; then
+ msg_unchanged=`expr ":$TEST_COLORS:" : ".*:pass=\([^:]*\):"`
+ msg_updated=`expr ":$TEST_COLORS:" : ".*:fail=\([^:]*\):"`
+ fi
+ msg_unchanged="${msg_begin}${msg_unchanged:-32;1}m"
+ msg_updated="${msg_begin}${msg_updated:-31;1}m"
+ msg_reset="${msg_begin}m"
+ ;;
+ esac
+ unset msg_begin
+fi
+
if [ -f "$target" -a ! -${empty:+f}${empty:-s} "$temp" ] || cmp "$target" "$temp" >/dev/null 2>&1; then
- echo "$target unchanged"
+ echo "$target ${msg_unchanged}unchanged${msg_reset}"
rm -f "$temp"
else
- echo "$target updated"
+ echo "$target ${msg_updated}updated${msg_reset}"
[ x"${keepsuffix}" = x ] || mv -f "$target" "${target}${keepsuffix}"
mv -f "$temp" "$target"
fi