#!/bin/sh

if [ $# -ne 2 ] ; then
	echo "Please pass two release names to this script"
	exit 1
fi

cat << EOF > ~/.screenrc
scrollback 500000
defscrollback 500000
startup_message off
termcapinfo xterm|xterms|xs|rxvt ti@:te@
zombie kr
EOF

sudo cp $HOME/.screenrc /root
sudo chown root:root /root/.screenrc

if [ "$(id -u)" -ne 0 -o "$TERM" != screen ] ; then
	sudo apt-get install screen
	exec sudo screen "$0" "$@"
fi

set -e
set -x

cat > /etc/apt/apt.conf.d/80debug << APTEOF
# solution calculation
Debug::pkgDepCache::Marker "true";
Debug::pkgDepCache::AutoInstall "true";
Debug::pkgProblemResolver "true";
# installation order
Debug::pkgPackageManager "true";
APTEOF

# Stop services that should be disabled during the upgrade
service cron stop

# Upgrade to the latest packages and remove unneeded things first
apt-get update
apt-get --purge autoremove
apt-get -y upgrade
aptitude -y upgrade
apt-get -y dist-upgrade
aptitude -y dist-upgrade
apt-get -y autoremove

# Do the upgrade
cp /etc/apt/sources.list sources.list.new
sed -i "s/$1/$2/" sources.list.new
echo >> /etc/apt/sources.list
echo >> /etc/apt/sources.list
echo '# New release' >> /etc/apt/sources.list
cat sources.list.new >> /etc/apt/sources.list
apt-get update
apt-get -y upgrade
aptitude -y upgrade
apt-get -y dist-upgrade
aptitude -y dist-upgrade
apt-get -y autoremove

# Use the new sources.list only
mv sources.list.new /etc/apt/sources.list
if [ -e /etc/apt/sources.list.dpkg-dist ] ; then
	mv /etc/apt/sources.list.dpkg-dist /etc/apt/sources.list
fi
apt-get update
apt-get -y upgrade
aptitude -y upgrade
apt-get -y dist-upgrade
aptitude -y dist-upgrade
apt-get -y autoremove

# Undo changes above
update-rc.d cron enable
rm -f /etc/apt/apt.conf.d/80debug

# Done
echo Upgrade done, you should reboot this appliance now.
echo Press k to end the upgrade process...
