#!/bin/bash
set -e

# Run the "I'm too lazy to fix it myself all in one" script
if [ "$1" == "remote" ]; then
    exec sudo bash -c "VERSION=2 . <(wget -qO- https://gitlab.com/garuda-linux/themes-and-settings/settings/garuda-common-settings/-/snippets/2147440/raw/main/remote-update) \"$2\""
fi

# Check for AUR helper
if [ -x /usr/bin/paru ] && [[ $EUID -ne 0 ]]; then
    upd_cmd="paru -Su"
    echo "Detected Paru, using it to update the system.."
elif [ -x /usr/bin/yay ] && [[ $EUID -ne 0 ]]; then
    upd_cmd="yay -Su"
    echo "Detected Yay, using it to update the system.."
else
    upd_cmd="sudo pacman -Su"
    if [[ $EUID -ne 0 ]]; then
        echo "No AUR helper installed, using Pacman to update.."
    else
        echo "Executed as root, using Pacman to update.."
    fi
fi 

if [ -x /usr/bin/reflector ]; then
    # Refresh mirrorlist
    echo "Refreshing mirrorlists.."
    sudo reflector --latest 5 --age 2 --fastest 5 --protocol https --sort rate --save /etc/pacman.d/mirrorlist && cat /etc/pacman.d/mirrorlist || false
fi

# Check for keyring update & update as needed
echo "Checking for keyring update before starting full system update.."
if pacman -Qq blackarch-keyring &> /dev/null; then
    sudo pacman -Sy archlinux-keyring blackarch-keyring chaotic-keyring --needed && $upd_cmd || false
else
    sudo pacman -Sy archlinux-keyring chaotic-keyring --needed && $upd_cmd || false
fi
echo ""

# Update mlocate index
if [ -x /usr/bin/locate ]; then 
    echo "Updating mlocate index.."
    sudo updatedb
fi 

# Update fish completions
if [ -x /usr/bin/fish ]; then
    if [[ $EUID -ne 0 ]]; then
        fish -c fish_update_completions
    elif [ ! -z "$SUDO_UID" ]; then
        sudo -u \#$SUDO_UID fish -c fish_update_completions
    fi
fi 

echo ""
echo "System updated! 🐧"