65 lines
1.0 KiB
Bash
Executable File
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"
|