aboutsummaryrefslogtreecommitdiffstats
path: root/util/check-mirror
diff options
context:
space:
mode:
Diffstat (limited to '')
-rwxr-xr-xutil/check-mirror40
1 files changed, 40 insertions, 0 deletions
diff --git a/util/check-mirror b/util/check-mirror
new file mode 100755
index 0000000..ecf01b7
--- /dev/null
+++ b/util/check-mirror
@@ -0,0 +1,40 @@
+#!/bin/sh
+# See LICENSE file for copyright and license details.
+
+set -e
+
+if ! test $# = 3; then
+ printf 'usage: %s tarball-url ref-tarball work-dir\n' "$0" >&2
+ exit 1
+fi
+
+utildir="$(dirname -- "$0")"
+tarball="$3/download-$$.tar.gz"
+refdir="$3/$$.refdir"
+tmpdir="$3/$$.tmpdir"
+
+rm -rf -- "${refdir}"
+rm -rf -- "${tmpdir}"
+mkdir -- "${refdir}"
+mkdir -- "${tmpdir}"
+
+curl -sL -- "$1" > "${tarball}"
+gunzip < "${tarball}" | (cd -- "${tmpdir}" && tar -x)
+gunzip < "$2" | (cd -- "${refdir}" && tar -x)
+(cd -- "${refdir}"/*/ && find -print0) > "$3/listing-1"
+(cd -- "${tmpdir}"/*/ && find -print0) > "$3/listing-2"
+
+set +e
+"${utildir}"/repodiff "${refdir}"/* "$3/listing-1" "${tmpdir}"/* "$3/listing-2"
+ret=$?
+set -e
+
+rm -rf -- "${refdir}"
+rm -rf -- "${tmpdir}"
+
+if test $ret = 0; then
+ "${utildir}"/get-checksums "${tarball}"
+fi
+
+rm -f -- "${tarball}"
+exit $ret