#!/bin/bash
#
# thomas@linuxmuster.net
# 20260603
#

# options
echo "$@" | grep -q "\-\-force" && donotask="yes"
echo "$@" | grep -q "\-\-reboot" && autoreboot="yes"
if echo "$@" | grep -q "\-\-help"; then
    echo "Usage: linuxmuster-release-upgrade [--force|--reboot|--help]"
    exit 0
fi

# security query
if [ -n "$donotask" ]; then
    echo "### linuxmuster.net 7.3 upgrade ###"
else
    echo "############################################################"
    echo "#                                                          #"
    echo "#                        ATTENTION!                        #"
    echo "#                                                          #"
    echo "# This script upgrades your system to linuxmuster.net 7.3! #"
    echo "# Make sure you have created a snapshot before.            #"
    echo "#                                                          #"
    echo "############################################################"
    echo
    sleep 3
fi

# first configure grub-pc, if necessary
dpkg-reconfigure --priority=critical grub-pc || exit 1

# save resolv.conf
cp /etc/resolv.conf /etc/resolv.conf.release-upgrade

# start release upgrade noninteractively
echo DPkg::options \{ \"--force-confdef\"\; \"--force-confold\"\; \} > /etc/apt/apt.conf.d/local
apt-get -y install --reinstall python3-debian  # repair possibly broken package
if ! do-release-upgrade -m server -f DistUpgradeViewNonInteractive; then
    rm -f /etc/apt/apt.conf.d/local
    echo "An error ocurred!"
    exit 1
fi

# test release number
if grep -q "22.04" /etc/issue; then
    rm -f /etc/apt/apt.conf.d/local
    echo "Upgrade failed!"
    exit 1
fi

# restore resolv.conf
rm -f /etc/resolv.conf
mv /etc/resolv.conf.release-upgrade /etc/resolv.conf

# disable obsolete services
for s in isc-dhcp-server6 systemd-resolved; do
    for c in stop disable mask; do
        systemctl $c $s
    done
done

# ensure ntpsec pkgs are installed
DEBIAN_FRONTEND=noninteractive apt-get -y install ntpsec ntpsec-ntpdate ntpsec-ntpdig

# create repo list
echo "deb https://deb.linuxmuster.net/ lmn73 main" >> /etc/apt/sources.list.d/lmn.list

# upgrade linuxmuster pkgs
DEBIAN_FRONTEND=noninteractive linuxmuster-distupgrade && apt-get clean

# remove apt tweak
rm -f /etc/apt/apt.conf.d/local

# reboot
[ -n "$autoreboot" ] && reboot
