summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolás Reynolds <fauno@endefensadelsl.org>2013-06-20 18:22:30 -0300
committerNicolás Reynolds <fauno@endefensadelsl.org>2013-06-20 18:22:30 -0300
commita20d4c7fc88f07e747536d8520eb1d041b64b2b8 (patch)
treef52fb267ed06e719fdde017808f410cae7873c82
parent4d156213b19def55ab8b8ddcb15c5b57040bbe1f (diff)
Show diff between repos
-rwxr-xr-xrepo-diff54
1 files changed, 54 insertions, 0 deletions
diff --git a/repo-diff b/repo-diff
new file mode 100755
index 0000000..7527381
--- /dev/null
+++ b/repo-diff
@@ -0,0 +1,54 @@
+#!/usr/bin/env bash
+# Shows a diff between repo databases
+
+if test $# -eq 0; then
+ printf "$(gettext "Compares two repo databases using distro/repo/architecture format
+
+Usage:
+\t%s arch/core/i686 parabola/core/i686
+
+Shortcuts:
+\tarch \texpands to archlinux repo url repo
+\tparabola\texpands to parabola repo url\n")" ${0##*/}
+ exit 0
+fi
+
+b() { bsdtar ztf $1 | cut -d "/" -f1 | sort -u ; }
+n() { echo "$1".db | tr "/" "-"; }
+
+# hopefully simple way to convert
+# parabola/libre/i686
+# to
+# http://repo.parabolagnulinux.org/libre/os/i686/libre.db
+# add more distros here
+g() {
+ echo "$1" | sed -e "s,^\([^/]\+\)/\([^/]\+\)/\([^/]\+\)$,\1/\2/os/\3/\2.db," \
+ -e "s,^parabola/,http://repo.parabolagnulinux.org/," \
+ -e "s,^arch\(linux\)\?/,http://mirrors.kernel.org/archlinux/,"
+}
+
+mkdir ${0##*/}.$$
+pushd ${0##*/}.$$ >/dev/null
+
+d=""
+for i in $1 $2; do
+ n=$(n "$i")
+
+ test -z "$n" && exit 1
+
+ wget -O "$n" -nv $(g "$i")
+ b "$n" >${n}.orig
+
+ d+=" ${n}.orig"
+done
+
+{
+ printf "$(gettext "Difference between %s and %s")\n---\n" $1 $2
+ which diffstat &>/dev/null && diff -auN ${d[@]} | diffstat
+ diff -auN ${d[@]}
+} >../${n}.diff
+
+popd >/dev/null
+rm -r ${0##*/}.$$
+
+printf "$(gettext "Difference save on %s")\n" ${n}.diff