123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- #!/bin/bash
- ## `echo`s:
- ## * 'true' - if all upgrades have been installed
- ## * 'false' - if there are pending upgrades
- ## * nothing - if apt-get is currently locked
- ##
- ## Forwards the exit code of the package manager.
- if [ -e /etc/system-release ]; then
- ## Fedora
- if command -v dnf >/dev/null; then
- yum=dnf
- else
- yum=yum
- fi
- # shellcheck disable=SC2034
- yum_output="$($yum -yq check-update)"
- exit_code="$?"
- [ "$exit_code" -eq 100 ] && echo "false" && exit 0
- [ "$exit_code" -eq 0 ] && echo "true"
- elif [ -e /etc/debian_version ]; then
- ## Debian
- set -e
- set -o pipefail
- # shellcheck disable=SC2034
- apt_get_update_output="$(apt-get -q update 2>&1)"
- apt_get_upgrade_output="$(LANG="C" apt-get -s upgrade 2>&1)"
- exit_code="$?"
- echo "$apt_get_upgrade_output" | awk "/^Inst/{ print $2 }" | [ "$(wc -L)" -eq 0 ] && echo "true" || echo "false"
- elif [ -e /etc/arch-release ]; then
- ## Archlinux
- set -e
- set -o pipefail
- checkupdates >/dev/null 2>&1
- exit_code="$?"
- [ "$exit_code" -eq 2 ] && echo "true" && exit 0
- echo "false"
- elif [ -e /etc/gentoo-release ]; then
- ## Gentoo
- set -e
- set -o pipefail
- emerge_output="$(emerge -puDv @world 2>&1)"
- exit_code="$?"
- echo "$emerge_output" | grep -qF -- '[ebuild' && echo "false" || echo "true"
- else
- echo "Check not implemented for this distribution" >&2
- exit 1
- fi
- exit "$exit_code"
|