#!/usr/bin/env bash # Shows a diff between repo databases . libremessages usage() { print "Usage: %s arch/core/i686 parabola/core/i686" "${0##*/}" print "Compares two repo databases using distro/repo/architecture format." echo print 'Shortcuts:' flag 'arch' 'expands to Arch Linux repo url' flag 'parabola' 'expands to Parabola GNU/Linux-libre repo url' } if test $# -eq 0; then usage 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##*/}.$$ print "Difference save on %s" "${n}.diff"