#!/usr/bin/env bash set -o nounset set -o pipefail has_sudo=false is_root=false sudo="" if test "${EUID}" -eq 0 then is_root=true fi if test "${is_root}" = false && command -v sudo > /dev/null 2>&1 && id -nG "${USER}" | grep -Eqw 'admin|sudo|wheel' then has_sudo=true sudo -v while true do sleep 60 sudo -nv kill -0 "$$" || exit done > /dev/null 2>&1 & fi if test "${has_sudo}" = true then sudo="sudo -H" fi # apt if command -v apt > /dev/null 2>&1 && { test "${has_sudo}" = true || test "${is_root}" = true; } then kernel=(linux-headers-generic linux-image-generic) if apt-cache show raspberrypi-bootloader > /dev/null 2>&1 then kernel=(raspberrypi-bootloader raspberrypi-kernel raspberrypi-kernel-headers) fi time { ${sudo} locale-gen && ${sudo} dpkg --configure -a && ${sudo} apt-get update && ${sudo} apt-get autoclean && ${sudo} apt-get autoremove && ${sudo} apt-get install "${kernel[@]}" && ${sudo} apt-get dist-upgrade && ${sudo} apt-get autoremove && ${sudo} dpkg --configure -a } exit_code="${?}" reboot_required="" if test -e /run/reboot-required || test -e /run/reboot-required.pkgs then reboot_required=" -> REBOOT REQUIRED" fi if test "${exit_code}" -eq 0 then printf "\nAPT SUCCEEDED%s\n\n" "${reboot_required}" else printf "\nAPT FAILED%s\n\n" "${reboot_required}" fi fi # brew if command -v brew > /dev/null 2>&1 && test "${is_root}" = false then brew update && brew upgrade && brew upgrade --cask --greedy printf "\n" fi # dnf if command -v dnf > /dev/null 2>&1 && { test "${has_sudo}" = true || test "${is_root}" = true; } then time { ${sudo} dnf --refresh upgrade && ${sudo} dnf autoremove } exit_code="${?}" reboot_required="" if ! ${sudo} dnf needs-restarting -r > /dev/null 2>&1 then reboot_required=" -> REBOOT REQUIRED" fi if test "${exit_code}" -eq 0 then printf "\nDNF SUCCEEDED%s\n\n" "${reboot_required}" else printf "\nDNF FAILED%s\n\n" "${reboot_required}" fi fi # flatpak if command -v flatpak > /dev/null 2>&1 then flatpak update printf "\n" fi if test "${has_sudo}" = true && ${sudo} bash -c 'command -v flatpak > /dev/null 2>&1' then ${sudo} flatpak update printf "\n" fi # pipx if command -v pipx > /dev/null 2>&1 then pipx upgrade-all printf "\n" fi if test "${has_sudo}" = true && ${sudo} bash -c 'command -v pipx > /dev/null 2>&1' then ${sudo} pipx upgrade-all printf "\n" fi