mirror of https://git.envs.net/envs/ops.git
75 lines
2.2 KiB
Bash
Executable File
75 lines
2.2 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
# Color diff output, for human consumption
|
|
|
|
# License: LGPLv2
|
|
# Author:
|
|
# http://www.pixelbeat.org/
|
|
# Notes:
|
|
# If 2 parameters are passed, then they are passed to
|
|
# the `diff -Naru` command first. Otherwise the parameters
|
|
# (or stdin) are assumed to be diff format and are colourised.
|
|
#
|
|
# VIM can be useful for viewing diffs also:
|
|
# diff -Naru a b | vim -R -
|
|
# vim -R a-b.diff
|
|
# Changes:
|
|
# V0.1, 12 Feb 2008, Initial release
|
|
# V0.2, 18 Feb 2008, Use tput rather than hardcoding escape sequences.
|
|
# V0.3, 24 Apr 2008, Support Mac OS X
|
|
# V0.4, 30 Apr 2008, P@draigBrady.com
|
|
# Use $PAGER if set
|
|
# Manfred Schwarb <manfred99@gmx.ch>
|
|
# Support `diff -c` format fully.
|
|
# Pointed out issues with less -EF options.
|
|
# Suggested to use the less -S option.
|
|
# V0.5, 18 Jun 2009, P@draigBrady.com
|
|
# Delineate each file level item with highlight.
|
|
# Simplify expressions by using '&' in replacement.
|
|
# Use 't' after all matches for consistency and speed.
|
|
|
|
# less -K reportedly not available on older Mac OS X
|
|
less -K -Ff /dev/null 2>/dev/null && CTRL_C_EXITS="-K"
|
|
|
|
RED=1; GREEN=2; BLUE=4; BRIGHT='1;'
|
|
|
|
tputc() {
|
|
bright=$1; colour=$2
|
|
[ "$bright" ] && tput bold
|
|
tput setaf $colour
|
|
}
|
|
|
|
DEL="`tputc $BRIGHT $RED`"
|
|
ADD="`tputc $BRIGHT $GREEN`"
|
|
CHG="`tputc $BRIGHT $BLUE`"
|
|
FIL="`tput smso`" #highlight file level items
|
|
RST="`tput sgr0`"
|
|
|
|
if [ "$#" -eq "2" ]; then
|
|
diff -Naru "$@"
|
|
else
|
|
cat "$@"
|
|
fi |
|
|
sed "
|
|
s/^\*\{3\}.*\*\{4\}/$CHG&$RST/;t
|
|
s/^-\{3\}.*-\{4\}/$CHG&$RST/;t
|
|
s/^@.*/$CHG&$RST/;t
|
|
s/^[0-9].*/$CHG&$RST/;t
|
|
s/^!.*/$CHG&$RST/;t
|
|
|
|
s/^-.*/$DEL&$RST/;t
|
|
s/^<.*/$DEL&$RST/;t
|
|
|
|
s/^\*.*/$ADD&$RST/;t
|
|
s/^\+.*/$ADD&$RST/;t
|
|
s/^>.*/$ADD&$RST/;t
|
|
|
|
s/^Only in.*/$FIL&$RST/;t
|
|
s/^Index: .*/$FIL&$RST/;t
|
|
s/^diff .*/$FIL&$RST/;t
|
|
" |
|
|
${PAGER:-less -QRS $CTRL_C_EXITS}
|
|
|
|
# could use less -EFX also, but for large files or lots of scrolling, this
|
|
# is a lot more obtrusive on the terminal as the [de]init codes not used.
|