summaryrefslogtreecommitdiffstats
path: root/dot_local
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--dot_local/bin/executable_update92
1 files changed, 92 insertions, 0 deletions
diff --git a/dot_local/bin/executable_update b/dot_local/bin/executable_update
new file mode 100644
index 0000000..1c36665
--- /dev/null
+++ b/dot_local/bin/executable_update
@@ -0,0 +1,92 @@
+#!/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
+ . /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
+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