#!/bin/sh

logfile='/var/log/autoupdates.log'

export DEBIAN_FRONTEND=noninteractive
export NEEDRESTART_MODE=a
echo 'libc6 libraries/restart-without-asking boolean true' | debconf-set-selections

log() {
  sudo tee -a "$logfile" 2>&1
}

checkreboot() {
  if [ -f /var/run/reboot-required ]; then
    echo "REBOOTING..." | sudo tee log
    sudo reboot
  fi
}

true | sudo tee "$logfile"

echo "$(hostname) - UPDATE STARTED - $(date)" | log

checkreboot

sudo apt-get update 2>/dev/null

updates=$(apt list --upgradable 2>/dev/null | wc -l | awk '{$1=$1}1')

if [ $updates -gt 1 ]; then
  echo "[i] $(hostname): $updates updates will be applied" | log
else
  echo "[i] $(hostname): No updates available" | log
  (echo "$(hostname) - UPDATE FINISHED - $(date)" | log) && exit 0
  exit 0
fi

echo "[i] $(hostname): executing autoremove..." | log
sudo apt-get -fuy --allow autoremove
checkreboot
echo "[i] $(hostname): executing clean..." | log
sudo apt-get --allow clean
checkreboot
echo "[i] $(hostname): executing upgrade..."
sudo apt-get --allow -o Dpkg::Options::="--force-confdef" --allow -o Dpkg::Options::="--force-confold" -fuy upgrade || (echo 'dist-upgrade error.' | log)
checkreboot
echo "[i] $(hostname): executing dist-upgrade..."
sudo apt-get --allow -o Dpkg::Options::="--force-confdef" --allow -o Dpkg::Options::="--force-confold" -fuy dist-upgrade || (echo 'dist-upgrade error.' | log)
checkreboot

(echo "$(hostname) - UPDATE FINISHED - $(date)" | log) && exit 0

