summaryrefslogtreecommitdiffstats
path: root/dot_local/bin/executable_update
blob: 6ab440c43dd6fe218f6dbfff37946e0bda445615 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
#!/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