diff options
author | Nicolás Reynolds <fauno@endefensadelsl.org> | 2013-06-20 18:22:30 -0300 |
---|---|---|
committer | Nicolás Reynolds <fauno@endefensadelsl.org> | 2013-06-20 18:22:30 -0300 |
commit | a20d4c7fc88f07e747536d8520eb1d041b64b2b8 (patch) | |
tree | f52fb267ed06e719fdde017808f410cae7873c82 /repo-diff | |
parent | 4d156213b19def55ab8b8ddcb15c5b57040bbe1f (diff) |
Show diff between repos
Diffstat (limited to 'repo-diff')
-rwxr-xr-x | repo-diff | 54 |
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 |