#!/bin/sh set -e # if doas is installed, use it instead of sudo if [ -x "$(command -v doas)" ]; then sudo() { doas "$@" } fi # Get current Distro if [ -f /etc/os-release ]; then # shellcheck source=/etc/os-release . /etc/os-release if [ -z "$ID_LIKE" ]; then ID_LIKE="" fi else ID=$(uname -s) fi UPDATED=0 set -- "$ID" "$ID_LIKE" for i in "$@"; do case "$i" in # YUNO use ID_LIKE, chimera :( alpine | chimera) sudo apk update || return 1 sudo apk upgrade || return 1 UPDATED=1 ;; arch) # TODO: Find a way to prefer one over the other besides hardcoding if [ -x "$(command -v yay)" ]; then yay -Syu || return 1 yay -Yc || return 1 elif [ -x "$(command -v paru)" ]; then paru -Syu || return 1 paru -c || return 1 else sudo pacman -Syu || return 1 fi UPDATED=1 ;; Darwin) brew update || return 1 brew upgrade -g || return 1 brew cleanup || return 1 UPDATED=1 ;; debian) sudo apt update || return 1 sudo apt dist-upgrade || return 1 sudo apt autoremove || return 1 UPDATED=1 ;; gentoo) sudo emaint -a sync || return 1 sudo emerge -avuDU --changed-use @world || return 1 sudo emerge -av --depclean || return 1 UPDATED=1 ;; opensuse) sudo zypper refresh || return 1 sudo zypper update || return 1 sudo zypper clean -a || return 1 UPDATED=1 ;; *) ;; esac if [ "$UPDATED" -eq 1 ]; then break fi done # Update flatpaks, if flatpak is installed if [ -x "$(command -v flatpak)" ]; then flatpak update || return 1 UPDATED=1 fi # Update snaps, if snap is installed # flatpaks are better (this is not even a hot take) if [ -x "$(command -v snap)" ]; then sudo snap refresh || return 1 UPDATED=1 fi if [ "$UPDATED" -eq 0 ]; then echo "No package managers found!" exit 1 fi