#!/bin/bash

UPGRADE_FILE=/var/lib/zentyal/.upgrade-finished

rm -f $UPGRADE_FILE

export DEBIAN_FRONTEND=noninteractive

function upgrade
{
    apt-get update

    for i in `seq 1 10`
    do
        if apt-get dist-upgrade -y --force-yes --download-only
        then
            break
        else
            echo "Download failed, retrying in 5 seconds..."
            sleep 5
        fi
    done

    apt-get dist-upgrade --purge -y --force-yes -o DPkg::Options::="--force-confdef"
}

sed -i "s/^deb-src/#deb-src/g" /etc/apt/sources.list

echo; echo "Upgrading your current system to the latest packages..."; echo
upgrade

echo; echo "Upgrading from Zentyal 4.1 to Zentyal 4.2..."; echo
sed -ri '/zentyal(.)4.1/d' /etc/apt/sources.list
echo 'deb http://archive.zentyal.org/zentyal 4.2 main extra' > /etc/apt/sources.list.d/zentyal-archive.list
sed -i 's/zentyal-qa-4.1/zentyal-qa-4.2/g' /etc/apt/sources.list.d/zentyal-qa.list
# Workaround to avoid dependency problems when packages are hold
for e in `grep -R "a=zentyal-qa" /etc/apt | cut -f1 -d:`; do rm -f $e; done

upgrade

if apt-get dist-upgrade --purge -y --force-yes -o DPkg::Options::="--force-confdef"
then
    # Purge all no longer needed running services
    dpkg -l | grep 'zentyal-' | cut -d' ' -f3 | xargs apt-mark manual
    apt-get autoremove --purge -y --force-yes -o DPkg::Options::="--force-confdef"

    # Restart Zentyal UI
    service zentyal webadmin restart

    echo; echo "Zentyal upgrade finished!"
else
    echo; echo "Zentyal upgrade failed. Full log at /var/log/zentyal/upgrade.log."
fi

apt-get clean

touch $UPGRADE_FILE
