#!/bin/bash
shopt -s extglob
set -e

trap sun_shutdown SIGINT SIGTERM

PIDFILE=/var/run/slapt-update-notifier-d.pid
CONFFILE=/etc/slapt-get/slapt-update-notifier.conf
SLAPTRC=/etc/slapt-get/slapt-getrc
UPDATE_CHECK_FREQUENCY=4h

if [ ! -f $SLAPTRC ]; then
  echo "Unable to read $SLAPTRC"
  exit 1
fi

WORKINGDIR=$(grep WORKINGDIR /etc/slapt-get/slapt-getrc|cut -f2 -d=)
PENDING_UPDATES_FILE=${WORKINGDIR}/pending_updates

echo $$ > $PIDFILE
if [ -e $CONFFILE ]; then
  . $CONFFILE
fi


SLEEP_TIME=
case "$UPDATE_CHECK_FREQUENCY" in
  +([0-9])[hH])
    SLEEP_TIME=$((${UPDATE_CHECK_FREQUENCY/[a-zA-Z]/}*3600))
  ;;
  +([0-9])[mM])
    SLEEP_TIME=$((${UPDATE_CHECK_FREQUENCY/[a-zA-Z]/}*60))
  ;;
  +([0-9])[sS]|+([0-9]))
    SLEEP_TIME=${UPDATE_CHECK_FREQUENCY/[a-zA-Z]/}
  ;;
esac

sun_shutdown ()
{
  rm -f $PIDFILE
  exit
}

check_for_updates ()
{
  slapt-get --update &>/dev/null || return
  OUTPUT=$(slapt-get --upgrade -s 2>/dev/null | grep 'not upgraded\.$')
  UPGRADE_COUNT=$(echo $OUTPUT | awk '{print $1}')
  INSTALL_COUNT=$(echo $OUTPUT | awk '{print $3}')

  if [[ $UPGRADE_COUNT -gt 0 || $INSTALL_COUNT -gt 0 ]]; then
    touch $PENDING_UPDATES_FILE
  else
    if [ -f $PENDING_UPDATES_FILE ]; then
      rm $PENDING_UPDATES_FILE
    fi
  fi
}

while [ true ]
do
  check_for_updates
  sleep $SLEEP_TIME
done
