#!/bin/bash

[ -f /var/lib/update-notifier/disable-hwe-eol-messages ] || exit

if [ "$(id -u)" != '0' ]; then
	pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY /usr/bin/oem-lts-stacks-installer
	exit
fi

TITLE="OEM LTS Installer"
FAILED='Failed!\n\nCheck /var/log/oem-lts-stacks-installer.log for details.'

zenity --question --title "$TITLE" --text '<b><span foreground="red">WARNING\!</span></b>\n\nCurrent LTS enablement stack will not be supported anymore so it needs to upgrade to the latest LTS enablement stack.\n\nPlease make sure that this system still has <u>Internet connection</u> and <u>back up all of your data</u> before continuing.\n\nWould you like to continue?' || exit

(
export LANG=C
set -x -e

echo '# Updating Debian packages index...'
while fuser /var/lib/dpkg/lock; do sleep 1; done
apt-get update |& tee /tmp/apt.err && ! grep -q -e '^W: Failed' -e '^E: ' /tmp/apt.err || (echo "# $FAILED" && exit 1)

install_list=""
remove_list="oem-audio-i915-baytrail-dkms"

echo '# Checking packages for LTS enablement stack...'
for pkg in "$(dpkg-query -W | grep ^linux | grep -e 3.16.0 -e 3.19.0 -e 4.2.0 | cut -f 1)"; do
	remove_list="$remove_list $pkg"
done

for pkg in $(dpkg-query -W | cut -f 1 | grep -e lts-utopic$ -e lts-vivid$ -e lts-wily$); do
	remove_list="$remove_list $pkg"
	pkg="${pkg/lts-utopic/lts-xenial}"
	pkg="${pkg/lts-vivid/lts-xenial}"
	pkg="${pkg/lts-wily/lts-xenial}"
	if apt-cache show $pkg >/dev/null 2>&1; then
		install_list="$install_list $pkg+"
	fi
done

echo '# Upgrading LTS enablement stack...'
while fuser /var/lib/dpkg/lock; do sleep 1; done
apt-get purge --yes $remove_list $install_list |& tee /tmp/apt.err && ! grep -q -e '^W: Failed' -e '^E: ' /tmp/apt.err || (echo "# $FAILED" && exit 1)

if [ -d /usr/share/chestersmill ]; then
	echo '# Installing additional drivers...'
	while fuser /var/lib/dpkg/lock; do sleep 1; done
	dpkg -i /usr/share/chestersmill/*.deb
	rm -fr /usr/share/chestersmill
	sed -i '/usr\/share\/chestersmill/d' /var/lib/dpkg/info/chestersmill-settings.*
fi

rm -f /var/lib/update-notifier/disable-hwe-eol-messages /tmp/apt.err /etc/xdg/autostart/oem-lts-stacks-installer.desktop /usr/bin/oem-lts-stacks-installer
sed -i '/oem-lts-stacks-installer/d' /var/lib/dpkg/info/chestersmill-settings.*
sed -i '/etc\/xdg/d' /var/lib/dpkg/info/chestersmill-settings.*
echo '# Succeeded!\n\nPlease reboot the system.'
) |& tee /var/log/oem-lts-stacks-installer.log | sed 's/^[0-9]\+.*[^0-9]\+/hack \0/g' |
zenity --progress \
  --title="$TITLE" \
  --pulsate \
  --auto-kill \
  --no-cancel

(( $? != 0 )) && zenity --error --text="$FAILED"

exit 0
