#!/bin/sh

set -e

DIST=${DIST:-"vivid"}

SERVER="http://cdimage.ubuntu.com"
FLAVOUR="ubuntu-touch"
TYPE="daily-preinstalled"
NAME="${DIST}-preinstalled-touch-armhf.manifest"
RSYNCSERVER="rsync://cdimage.ubuntu.com/cdimage"

TMPDIR="$(mktemp -d)"

cleanup()
{
        rm -rf $TMPDIR
		exit 0
}

trap cleanup EXIT INT QUIT ILL KILL SEGV TERM

usage()
{
	echo
    echo "usage: $(basename $0) [<old build id> <new build id>]"
	echo
	echo "Unless old and new build id are specified, the script"
	echo "will automatically compare the last two available builds."
    exit 0
}

[ -n "$2" ] && STAMPS="$1 $2"

case "$1" in
	-h|--help)
		usage
		;;
	*)
		;;
esac

[ -z "$STAMPS" ] && STAMPS="$(rsync -l $RSYNCSERVER/$FLAVOUR/$TYPE/|\
	sed -e 's/^.* //'|grep ^[0-9]|sort|uniq|tail -2|tr '\n' ' ')"

OLD="${STAMPS%% *}"
NEW="$(echo $STAMPS|sed -e 's/^.* //')"

for STAMP in $STAMPS; do
	URL="$SERVER/$FLAVOUR/$TYPE/$STAMP/$NAME"
	wget -O $TMPDIR/$NAME.$STAMP -q $URL
done

while read line; do
	package="$(echo $line|sed -e 's/ .*//')"
	version="$(echo $line|sed -e 's/.* //')"
	if grep -qe "^$package[[:space:]]" $TMPDIR/$NAME.$NEW; then
		newline=$(grep -e "^$package[[:space:]]" $TMPDIR/$NAME.$NEW)
		newversion="$(echo $newline|sed -e 's/.* //')"
		if dpkg --compare-versions "$newversion" gt "$version"; then
			echo "$package from $version to $newversion" >>$TMPDIR/upgraded
		fi
	else
		echo "$package" >>$TMPDIR/dropped
	fi
done < $TMPDIR/$NAME.$OLD

while read line; do
	package="$(echo $line|sed -e 's/ .*//')"
	if ! grep -qe "^$package[[:space:]]" $TMPDIR/$NAME.$OLD; then
		echo "$package" >>$TMPDIR/new
	fi
done < $TMPDIR/$NAME.$NEW

echo
echo "Package changes between $OLD and $NEW"
[ -e $TMPDIR/new ] && echo "=== New Packages ===" && cat $TMPDIR/new && echo
[ -e $TMPDIR/dropped ] && echo "=== Dropped Packages ===" && cat $TMPDIR/dropped && echo
[ -e $TMPDIR/upgraded ] && echo "=== Upgraded Packages ===" && cat $TMPDIR/upgraded
