Files
git-diff-image/git_diff_image
Ewan Mellor 35abd26ba5 Added.
2015-05-02 20:04:24 -07:00

65 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
set -eu
set -o pipefail
name="$1"
f1="$2"
f2="$5"
name1="a/$name"
name2="b/$name"
if diff "$f1" "$f2" >/dev/null
then
exit 0
fi
exif() {
local b=$(basename "$1")
local d=$(mktemp -t "$b")
exiftool "$1" | grep -v "File Name" | \
grep -v "Directory" | \
grep -v "File Inode Change" | \
grep -v "File Modification Date/Time" | \
grep -v "File Permissions" \
>"$d"
echo "$d"
}
diff_clean_names() {
diff -u "$1" --label "$name1" "$2" --label "$name2" || true
}
if which -s exiftool
then
d1=$(exif "$f1")
d2=$(exif "$f2")
diff_clean_names "$d1" "$d2"
else
diff_clean_names "$f1" "$f2"
fi
if [ -z "${GIT_DIFF_IMAGE_ENABLED-}" ] || \
! which -s compare || \
! which -s montage
then
exit 0
fi
if compare "$f1" "$f2" /dev/null
then
exit 0
fi
bn=$(basename "$f1")
destfile=$(mktemp -t "$bn").png
compare "$f1" "$f2" png:- | \
montage -geometry +4+4 "$f1" - "$f2" png:- >"$destfile" 2>/dev/null || true
open "$destfile"