#!/bin/bash
set -euo pipefail

show_help() {
	cat <<'EOF'
Usage: fullupgrade

Met à jour Arch Linux et effectue un nettoyage:
  - mise à jour de archlinux-keyring
  - synchronisation complète du système
  - suppression des paquets orphelins
  - nettoyage du cache pacman

Attention: ce script modifie le système et s'exécute sans confirmation.
EOF
}


require_root() {
	if [ "${EUID:-$(id -u)}" -ne 0 ]; then
		echo "Erreur: ce script doit être exécuté en root." >&2
		exit 1
	fi
}

cleanup_orphans() {
	local orphans=()

	mapfile -t orphans < <(pacman -Qqtd)

	if [ "${#orphans[@]}" -gt 0 ]; then
		pacman -Rns --noconfirm "${orphans[@]}"
	else
		echo "Aucun paquet orphelin à supprimer."
	fi
}

main() {
	if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
		show_help
		exit 0
	fi

	require_root

	echo "Mise à jour de archlinux-keyring..."
	pacman -Sy --noconfirm archlinux-keyring

	echo "Mise à jour complète du système..."
	pacman -Syu --noconfirm

	echo "Recherche des paquets orphelins..."
	cleanup_orphans

	echo "Nettoyage du cache pacman..."
	pacman -Sc --noconfirm

	echo "Mise à jour terminée avec succès."
}

main "$@"
