#!/usr/bin/bash yay -Syua echo "==> Updating flatpaks..." flatpak update echo "==> Syncing database..." sudo pacman -Sy --noconfirm || exit 1 function update_init_fail { echo "==> Initialising system update failed." >&2 echo "==> Cleaning up..." >&2 sudo rm -rf /var/lib/system-update exit 1 } if pacman -Qu >&-; then echo "==> System updates available." echo "==> Downloading system updates..." if [ ! -e /var/lib/system-update ]; then sudo mkdir -p /var/lib/system-update || update_init_fail fi sudo pacman -Suw --noconfirm --cachedir /var/lib/system-update || update_init_fail sudo ln -s /var/lib/system-update /system-update || update_init_fail echo "==> System update scheduled for next reboot." else echo "==> Up to date." if [ -e /system-update ]; then echo "==> There is another system update pending." while true; do read -n1 -p"==> Unschedule system update? [Y/n]: " q [ ! $q = "" ] && echo case $q in y|Y|"") sudo rm /system-update || { echo "==> Could not unschedule pending system update" >&2 exit 1 } echo "==> Unscheduled pending system update" break;; n|N) break;; *) continue;; esac done fi fi