diff options
-rwxr-xr-x | src/repo-diff | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/repo-diff b/src/repo-diff new file mode 100755 index 0000000..bfa1968 --- /dev/null +++ b/src/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 |