From 83a0104d5bcfbc3eab3f9846feac2bfa6712d3c2 Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Wed, 10 Jul 2019 20:53:40 -0700
Subject: [PATCH] Improve diff-docx.sh -> diff-zip.sh.

It now can be used on odts, docx, or epubs.
---
 tools/diff-docx.sh | 22 ----------------------
 tools/diff-zip.sh  | 26 ++++++++++++++++++++++++++
 2 files changed, 26 insertions(+), 22 deletions(-)
 delete mode 100755 tools/diff-docx.sh
 create mode 100755 tools/diff-zip.sh

diff --git a/tools/diff-docx.sh b/tools/diff-docx.sh
deleted file mode 100755
index 62e165ae5..000000000
--- a/tools/diff-docx.sh
+++ /dev/null
@@ -1,22 +0,0 @@
-#!/bin/sh
-f1="$1"
-f2="$2"
-test -f "$f1" -a -f "$f2" || {
-    echo "Usage: diff-docx first.docx second.docx" && exit 1
-}
-WORKDIR=$(mktemp -d -t diff-docx)
-trap "{ rm -r $WORKDIR; }" EXIT
-unzip -q -d "$WORKDIR/a" "$f1"
-unzip -q -d "$WORKDIR/b" "$f2"
-cd "$WORKDIR"
-mkdir tidy
-for x in a b; do
-    cp -r $x tidy/
-    find $x -iname '*.xml' -exec sh -c 'mkdir -p "$(dirname tidy/$1)" && tidy -q -xml -utf8 -i "$1" > "tidy/$1"' _ {} \;
-    find $x -iname '*.rels' -exec sh -c 'mkdir -p "$(dirname tidy/$1)" && tidy -q -xml -utf8 -i "$1" > "tidy/$1"' _ {} \;
-done
-cd tidy
-mkdir c
-cp -r a/* c/
-cp -r b/* c/
-find c -type f -exec sh -c 'echo "\033[1m=== ${1#*/} ===\033[0m" ; diff -u "a/${1#*/}" "b/${1#*/}" 2>&1' _ {} \;
diff --git a/tools/diff-zip.sh b/tools/diff-zip.sh
new file mode 100755
index 000000000..9ac4cf621
--- /dev/null
+++ b/tools/diff-zip.sh
@@ -0,0 +1,26 @@
+#!/bin/sh
+
+# This script allows you to compare two epub, odt, or docx
+# containers, ignoring insignificant formatting differences
+# in the XML contents.
+
+f1="$1"
+f2="$2"
+test -f "$f1" -a -f "$f2" || {
+    echo "Usage: diff-zip firstfile secondfile" && exit 1
+}
+WORKDIR=$(mktemp -d -t diff-zip)
+trap "{ rm -r $WORKDIR; }" EXIT
+unzip -q -d "$WORKDIR/a" "$f1"
+unzip -q -d "$WORKDIR/b" "$f2"
+cd "$WORKDIR"
+mkdir tidy
+for x in a b; do
+    cp -r $x tidy/
+    find -E $x -iregex '.*\.(xhtml|xml|rdf|rels)' -exec sh -c 'mkdir -p "$(dirname tidy/$1)" && tidy -q -xml -utf8 -i "$1" > "tidy/$1"' _ {} \;
+done
+cd tidy
+mkdir c
+cp -r a/* c/
+cp -r b/* c/
+find c -type f -exec sh -c 'echo "\033[1m=== ${1#*/} ===\033[0m" ; diff -u "a/${1#*/}" "b/${1#*/}" 2>&1' _ {} \;