summary refs log tree commit diff
path: root/bin/genup
blob: c759a10ab05053a02bc3cac89f7442a295079fb2 (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
#!/bin/sh
. /lib/gentoo/functions.sh

set -e
[ -n "${DEBUG:-}" ] && set -x

if [ "$UID" != 0 ]; then
	eerror "need to be root"
	exit 1
fi

# builtin emerge args
eargs=

# order:
# sync -> portage update -> update -> update unstable -> clean -> flatpak

if test $# -eq 0; then
	dosync=1
	doupdate=1
	dolive=1
	doclean=1
	doflatpak=1
fi

printonly=
while getopts spulcfKXBh opt; do
	case ${opt} in
	s) dosync=1 ;;
	u) doupdate=1 ;;
	l) dolive=1 ;;
	c) doclean=1 ;;
	f) doflatpak=1 ;;
	B) eargs="$eargs -X www-client/librewolf" ;;
	K) eargs="$eargs -X sys-kernel/* -X virtual/dist-kernel" ;;
	X) printonly=1 ;;
	h | ?)
		printf "usage: %s [-hsulcfBKX]\n" "$(basename "$0")"
		printf "\n"
		exit 2
		;;
	esac
done
shift $((OPTIND - 1))

_() {
	[ -n "$printonly" ] && printf "%s\n" "$*" && return
	eval $*
}

ebegin syncing
[ -n "${dosync:-}" ] &&
	_ emerge --sync &&
	eend

ebegin updating portage
emerge --pretend --quiet --update sys-apps/portage | grep -qE '\[.*U.*\]' &&
	_ emerge -a --oneshot --getbinpkg sys-apps/portage &&
	eend

ebegin updating @world
[ -n "${doupdate:-}" ] &&
	_ emerge -ag --update --deep --newuse --keep-going "$@" $eargs @world &&
	eend

# --binpkg-respect-use=y
# _ revdep-ebuild -- "$@" $eargs &&

ebegin updating unstable
[ -n "${dolive:-}" ] &&
	_ emerge -a1 --keep-going @live-rebuild &&
	eend

ebegin depcleaning
[ -n "${doclean:-}" ] &&
	_ emerge -a --depclean "$@" &&
	_ eclean --deep packages &&
	_ eclean --deep distfiles &&
	eend

ebegin updating @preserved-rebuild
[ -n "${doupdate:-}" ] &&
	_ emerge -a --keep-going "$@" $eargs @preserved-rebuild &&
	eend

ebegin updating flatpaks
[ -x "$(command -v flatpak)" ] && [ -n "${doflatpak:-}" ] &&
	_ flatpak upgrade &&
	_ flatpak uninstall --unused &&
	_ flatpak repair &&
	eend