Files
arch-fullupgrade/fullupgrade
T

62 lines
1.1 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
show_help() {
cat <<'EOF'
Usage: fullupgrade
Updates Arch Linux and performs cleanup:
- updates archlinux-keyring
- performs a full system synchronization
- removes orphaned packages
- cleans the pacman cache
Warning: this script modifies the system and runs without confirmation.
EOF
}
require_root() {
if [ "${EUID:-$(id -u)}" -ne 0 ]; then
echo "Error: this script must be run as 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 "No orphaned packages to remove."
fi
}
main() {
if [ "${1:-}" = "-h" ] || [ "${1:-}" = "--help" ]; then
show_help
exit 0
fi
require_root
echo "Updating archlinux-keyring..."
pacman -Sy --noconfirm archlinux-keyring
echo "Performing full system update..."
pacman -Syu --noconfirm
echo "Searching for orphaned packages..."
cleanup_orphans
echo "Cleaning pacman cache..."
pacman -Sc --noconfirm
echo "Update completed successfully."
}
main "$@"