#!/bin/sh
#
# Copyright © 2009 Mehdi Dogguy <mehdi@dogguy.org>
#

buildarea="/var/cache/pbuilder/result"
mirror="http://ftp.fr.debian.org/debian"
syscache="/var/cache/apt/archives"
cache="$HOME/debian/cache"
[ ! -f $HOME/.ddiffrc ] || source $HOME/.ddiffrc
mkdir -p $cache

function error() {
    echo "E: $1 !"
    exit 1
}

function info() {
    echo "I: $1"
}

srcpkg=$1
version="*"
if [ "$srcpkg" = "" ]; then
    srcpkg=$(basename `pwd`)
    version=`dpkg-parsechangelog | sed -n "s/^Version: //p"`
fi

if [ ! -d "$buildarea" ]; then
    error "Build-area directory ($buildarea) doesn't exist"
fi

if [ ! -f "debian/changelog" ]; then
    error "debian/changelog is missing"
fi

pkgs=`apt-cache showsrc $srcpkg | sed -n "s/^Binary: //p" | sed "s/,//g" | head -n 1`

# TODO: Download only the newest version (use dget or Packages file)
for i in $pkgs; do
    debfile=`apt-cache show $i | sed -n "s/^Filename: //p" | head -n 1`
    debname="$(basename $debfile)";
    deburl="$mirror/$debfile"
    if [ ! -f "$cache/$debname" -a -f "$syscache/$debname" ]; then
        cp $syscache/$debname $cache/$debname
    elif [ ! -f "$cache/$debname" ]; then
        info "Getting $deburl"
        curl -# $deburl > $cache/$debname
    fi
done

for pkg in $pkgs; do
    echo "=====< Debdiffing $pkg >======"
    debdiff $cache/${pkg}_*.deb $buildarea/${pkg}_*${version}*.deb
done
