#!/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