summaryrefslogtreecommitdiffstats
path: root/dot_local/bin/executable_update
blob: 1c3666577f92c5ffa3b97119b9371c637aea40af (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
#!/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