#!/bin/bash isroot=false issudo=false if [ "$EUID" -eq 0 ];then isroot=true;fi if [ -n "$SUDO_USER" ]; then issudo=true;fi usage(){ echo -n "spm " cat ./usr/share/doc/spm/spm_upgrade } yn="" while getopts 'hYyNnafp' flag; do case "${flag}" in [YyNnafp] ) yn="${yn}${flag}" ;; h|* ) usage exit 1 ;; esac done if $isroot; then echo -e "\033[1mUpdating apt sources...\033[0m" apt -qqq update echo -e "\033[1mapt upgrade summary:\033[0m" apt -qq upgrade --dry-run fi echo -e "\033[1mWill check and install updates for the following pipx packages:\033[0m" if $issudo;then sudo -u $SUDO_USER pipx list --short else pipx list --short fi echo -e "\033[1mFlatpak update summary:\033[0m" if $issudo;then sudo -u $SUDO_USER flatpak remote-ls --updates else flatpak remote-ls --updates fi while true; do if [ -z "$yn" ];then echo "Yy: Update All" echo "Nn: Update nothing" if $isroot; then echo "a: Upgrade apt packages";fi echo "f: Update flatpak packages" echo "p: Update pipx packages" echo "s: Update ssm2 packages" read -p "Install updates? " yn fi case $yn in *[Nn]* ) exit;; *[Yya]* ) if $isroot; then echo -e "\033[1mUpgrading apt packages...\033[0m";apt -y upgrade;fi;;& *[Yyf]* ) if $issudo; then echo -e "\033[1mUpdating flatpak packages...\033[0m";sudo -u $SUDO_USER flatpak update -y;else flatpak update -y;fi;;& *[Yyp]* ) if $issudo; then echo -e "\033[1mUpgrading pipx packages...\033[0m";sudo -u $SUDO_USER pipx upgrade-all;else pipx upgrade-all;fi;;& *[Yys]* ) if $issudo; then echo -e "\033[1mUpgrading ssm2 packages...\033[0m";sudo -u $SUDO_USER ssm -y;else ssm -yu;fi;;& *[Yyafps]* ) break;; * ) yn=""; echo "Please select a valid option.";; esac done