#!/usr/bin/env bash

function check_keyring() {
	echo -e "\e[34m::\e[0m Checking Arch Linux PGP Keyring..."
	local installedver
	installedver="$(LANG='' sudo pacman -Qi archlinux-keyring | grep -Po '(?<=Version         : ).*')"
	local currentver
	currentver="$(LANG='' sudo pacman -Si archlinux-keyring | grep -Po '(?<=Version         : ).*')"
	if [ "$installedver" != "$currentver" ]; then
		echo -e "\e[31m==> Arch Linux PGP Keyring is out of date.\e[0m"
		return 1
	else
		echo -e "\e[32m==> Arch Linux PGP Keyring is up to date.\e[0m"
		return 0
	fi
}

function update_keyring() {
	echo -e "\e[34m::\e[0m Updating Arch Linux PGP Keyring..."
	sudo pacman -Sy --needed archlinux-keyring
  # echo -e "keyring updating ..."
	echo -e "\e[32m==> Keyring updated.\e[0m"
}

function perform_full_upgrade() {
	local package_manager=$1
	if [ "$package_manager" == "1" ]; then
		echo -e "\e[34m::\e[0m Performing full system upgrade with pacman..."
		sudo pacman -Syu
    # echo -e "pacman updating ..."
		echo -e "\e[32m==> System upgraded.\e[0m"
	elif [ "$package_manager" == "2" ]; then
		echo -e "\e[34m::\e[0m Performing full system upgrade with yay..."
		yay -Syu
    # echo -e "yay updating ..."
		echo -e "\e[32m==> System upgraded.\e[0m"
	else
		echo "Invalid package manager selected. Exiting..."
		exit 1
	fi
}

function main() {
	check_keyring
	if [ $? -eq 1 ]; then
		read -rp "Do you want to update the keyring? (y/n): " update_keyring
		if [ "$update_keyring" != "y" ]; then
			echo "Exiting..."
			exit 0
		else
			update_keyring
			read -rp "Do you want to perform a full system upgrade? (y/n): " full_upgrade
			if [ "$full_upgrade" != "y" ]; then
				echo "Exiting..."
				exit 0
			else
				read -rp "Choose package manager (1:pacman/2:yay): " package_manager
				perform_full_upgrade "$package_manager"
			fi
		fi
	fi
}

main