#!/bin/bash

# Last update 2025/12/16 by pavroo

MANAGER=`cat /tmp/sparky-mgr`
if [ "$MANAGER" = "APT" ]; then
	MANAGER="apt"
elif [ "$MANAGER" = "Aptitude" ]; then
	MANAGER="aptitude"
elif [ "$MANAGER" = "Nala" ]; then
	MANAGER="nala"
else
	MANAGER="apt"
fi

if [ -d /tmp/old-kernel-remover ]; then
	sudo rm -rf /tmp/old-kernel-remover
fi
if [ -f /tmp/old-kernel-remover ]; then
	clear
	echo ""
	echo "  old-kernel-remover file is locked!"
	echo "  clean it up before launching it again!"
	echo ""
	sudo rm -f /tmp/old-kernel-remover
fi
mkdir -p /tmp/old-kernel-remover
sudo touch /tmp/old-kernel-remover/kernellist0
sudo touch /tmp/old-kernel-remover/kernellist
KERNELACTIVE=`uname -r`
sudo dpkg-query -l | grep linux-image | grep -v meta | grep -v meta-package | grep -v template | cut -d ' ' -f 3 > /tmp/old-kernel-remover/kernellist0
TEXT="The actual (active) kernel is: $KERNELACTIVE \nChoose a kernel to remove:"
TITLETEXT="Old Kernel Remover"
KERNELNUMBER=`cat /tmp/old-kernel-remover/kernellist0 | wc -l`
# exit if only one kernel is installed
if [ "$KERNELNUMBER" = "1" ]; then
	clear
	echo ""
	echo "There is only one kernel installed on this system:"
	echo "$KERNELACTIVE"
	echo "Cannot be removed!"
	echo 'Press <ENTER> to Exit...' && read
	echo ""
	exit 0
fi
# list kernels
sudo cat /tmp/old-kernel-remover/kernellist0 | grep -v "$KERNELACTIVE" > /tmp/old-kernel-remover/kernellist

for i in `cat /tmp/old-kernel-remover/kernellist`; do
	KER="$KER $i Installed"
done

# make menu
dialog --title "$TITLETEXT" --menu "$TEXT" 20 80 30 Exit "Exit the menu" $KER --yesno 2>/tmp/spt-choice

if [ "$?" != "0" ]; then
	RMKERNEL=`cat /tmp/spt-choice | head -n1`
	RMHEADERS=`cat /tmp/spt-choice | head -n1 | sed -e 's/image/headers/g'`
else
	RMKERNEL="Exit"
fi

if [ "$RMKERNEL" = "Exit" ]; then
	clear
	dialog --title "$TITLETEXT" --msgbox "\nExiting..." 20 80
	clear
	if [ "$MANAGER" = "apt" ]; then
		spta
	elif [ "$MANAGER" = "aptitude" ]; then
		sptt
	elif [ "$MANAGER" = "nala" ]; then
		sptn
	else
		spt
	fi
fi

if [ "$RMKERNEL" != "Exit" ]; then
	dialog --title "$TITLETEXT" --yesno "\nShould I remove this kernel: $RMKERNEL ?" 20 80
	if [ "$?" != "0" ]; then
		clear
	else
		clear
		sudo $MANAGER purge $RMKERNEL
		sudo $MANAGER purge $RMHEADERS
		if  [ "$MANAGER" = "apt" ] || [ "$MANAGER" = "nala" ]; then
			sudo $MANAGER autoremove
		fi
		echo 'Press <ENTER> to Exit...' && read
		clear
	fi	
fi

sudo rm -f /tmp/spt-choice
sudo rm -rf /tmp/old-kernel-remover

if [ "$MANAGER" = "apt" ]; then
	spta
elif [ "$MANAGER" = "aptitude" ]; then
	sptt
elif [ "$MANAGER" = "nala" ]; then
	sptn
else
	spt
fi

exit 0
