#!/bin/bash
# Copyright 2007 Google Inc. All Rights Reserved.

CACHE_DIR="/var/cache/google/desktop"
PREFIX="/opt/google/desktop"
GDL_UPDATE="/opt/google/desktop/bin/gdl_update"
PKG_FORMAT="rpm"
PKG_UPGRADE_CMD="rpm -U --nodeps"
TIMESTAMP_FILE="/var/cache/google/desktop/update_timestamp"
ID_FILE="/var/cache/google/desktop/id"
PATH=/sbin:/usr/sbin:/bin:/usr/bin:$PATH

if [ ! -x "$GDL_UPDATE" ]; then
  echo "gdl_update is not available."
  exit 1
fi

# run gdl_update
export PATH

DO_UPDATE=no
if [ ! -e $TIMESTAMP_FILE ]; then
  if touch $TIMESTAMP_FILE; then
    DO_UPDATE=yes
  else
    echo "Failed to create timestamp file."
  fi
else
  LAST=`date -u -r $TIMESTAMP_FILE +%s`
  NOW=`date -u +%s`
  DELAY=`expr 86400 + $RANDOM % 21600`
  DIFF=`expr $NOW - $LAST`

  # Update should only be occurred every 24 to 30 (randomly) hours.
  if [ $DIFF -gt $DELAY ]; then
    if touch $TIMESTAMP_FILE; then
      DO_UPDATE=yes
    else
      echo "Failed to update timestamp file."
    fi
  fi
fi

if [ "$DO_UPDATE" != "yes" ]; then
  exit 0
fi

UUID=""
if [ ! -f "$ID_FILE" ]; then
  UUIDGEN=`which uuidgen`
  if [ -n "$UUIDGEN" -a -x "$UUIDGEN" ]; then
    $UUIDGEN > $ID_FILE
    chmod 644 $ID_FILE
  fi
fi
UUID=`cat $ID_FILE`

if [ "$UUID" = "" ]; then
  UUID="0"
fi

NEW_PKG=`LD_LIBRARY_PATH="/opt/google/desktop/lib:$LD_LIBRARY_PATH" $GDL_UPDATE "rpm" "$UUID"`

# update package is successfully downloaded
if [ $? -eq 0 ] && [ -f "$NEW_PKG" ]; then
  rpm -U --nodeps "$NEW_PKG"
  if [ $? -eq 0 ]; then
    echo "Updated successfully."
  else
    echo "Update failed."
  fi
  rm -f "$NEW_PKG"
fi
