#!/bin/sh

name="dextrose-update"
. /etc/default/${name}

logfile="/var/log/${name}"

echo "$(date)" >> $logfile
echo -e "\tRepositories:" ${DEXTROSE_YUM_REPO} >> $logfile

reboot_pkgs="kernel kernel-firmware"
relogin_pkgs="sugar sugar-artwork sugar-base sugar-datastore sugar-presence-service sugar-toolkit"

yum="/usr/bin/yum --disablerepo=* --skip-broken --quiet"
for i in $DEXTROSE_YUM_REPO; do
   yum="$yum --enablerepo=$i"
done

updates() {
    ${yum} -e0 check-update | awk '/./{print $1 "-" $2}'
}

to_update=$(updates)
[ "${to_update}" ] || exit 0

parse() {
    for i in $@; do
        echo ${to_update} | grep "\(^\| \)$i\." >/dev/null && echo $i
    done
}

need_reboot=$(parse ${reboot_pkgs})
need_relogin=$(parse ${relogin_pkgs})

echo -e "\tPackages to update:" ${to_update} >> $logfile
${yum} -y update >> $logfile 2>&1
to_update=$(updates)

if [ "${need_reboot}" ]; then
    if [ "${need_reboot}" != "$(parse ${reboot_pkgs})" ]; then
        echo -e "\tNeed to reboot..." >> $logfile
        dbus-send --system /org/sugarlabs/system org.sugarlabs.system.Reboot
    fi
fi

if [ "${need_relogin}" ]; then
    if [ "${need_relogin}" != "$(parse ${relogin_pkgs})" ]; then
        echo -e "\tNeed to relogin..." >> $logfile
        dbus-send --system /org/sugarlabs/system org.sugarlabs.system.Relogin
    fi
fi
