diff options
Diffstat (limited to 'bin/genup')
| -rwxr-xr-x | bin/genup | 91 |
1 files changed, 91 insertions, 0 deletions
diff --git a/bin/genup b/bin/genup new file mode 100755 index 0000000..c759a10 --- /dev/null +++ b/bin/genup @@ -0,0 +1,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 |