From efde83edc971e1fc299f40a6f0504f43a182dcec Mon Sep 17 00:00:00 2001
From: Anish Mangal <anish@sugarlabs.org>
Date: Tue, 1 Feb 2011 20:10:17 -0300
Subject: [PATCH] Initial commit
Organization: Sugar Labs Foundation

Matches with rpm version dextrose-updater-1-8.fc11.src.rpm

http://download.sugarlabs.org/dextrose/testing/dxo2/rpms/source/dextrose-updater-1-8.fc11.src.rpm

Signed-off-by: Anish Mangal <anish@sugarlabs.org>
---
 sbin/dextrose-update      |   89 +++++++++++++++++++++++++++++++++++++++++++++
 sysconfig/dextrose-update |    1 +
 2 files changed, 90 insertions(+), 0 deletions(-)
 create mode 100755 sbin/dextrose-update
 create mode 100644 sysconfig/dextrose-update

diff --git a/sbin/dextrose-update b/sbin/dextrose-update
new file mode 100755
index 0000000..0b682d5
--- /dev/null
+++ b/sbin/dextrose-update
@@ -0,0 +1,89 @@
+#!/bin/sh
+
+name="dextrose-update"
+. /etc/sysconfig/${name}
+
+logfile="/var/log/${name}"
+
+while [ -n "$1" ] ; do
+    arg=$1
+    shift
+    case ${arg} in
+      	-f | --force)
+            force=1
+            ;;
+      	-h | --help)
+            echo "Usage: $0 [OPTION]"
+            echo ""
+            echo "Dextrose yum updater."
+            echo ""
+            echo "Options:"
+            echo "  -f, --force     update regarless already made daily check"
+            echo "  -h, --help      display this help and exit"
+            echo ""
+            echo "Configuration files:"
+            echo "  /etc/sysconfig/${name}"
+            echo ""
+            exit 0
+            ;;
+        *)
+            echo "Unknown argument $1"
+            exit 1
+            ;;
+    esac
+done
+
+if [ -z "${force}" -a -f ${logfile} ]; then
+    current_ts=$(date +%F)
+    check_ts=$(ls ${logfile} -l --time-style=+%F | awk '{print $6}')
+
+    if [ ${current_ts} == ${check_ts} ]; then
+        echo "Daily check already happened, pass --force to ignore it."
+        exit 0
+    fi
+fi
+
+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
diff --git a/sysconfig/dextrose-update b/sysconfig/dextrose-update
new file mode 100644
index 0000000..81f6ff8
--- /dev/null
+++ b/sysconfig/dextrose-update
@@ -0,0 +1 @@
+DEXTROSE_YUM_REPO="dextrose dextrose-freeworld"
-- 
1.7.3.4

