53 lines
1.4 KiB
Bash
53 lines
1.4 KiB
Bash
#!/bin/sh
|
|
#
|
|
# v1.0 - 20/09/2023
|
|
# Script que revisa si existen actualizaciones disponibles para el sistema
|
|
# Dependencas: dzen2
|
|
#
|
|
# Lista de códigos de salida
|
|
# 0 - Operación exitosa
|
|
# 1 - Dependencia no cumplida
|
|
# 3 - Paquetes rotos
|
|
# 4 - Operación exitosa, pero no hubo cambios
|
|
#
|
|
# Shell: POSIX compliant
|
|
# Autor: O. Sánchez <o-sanchez@linuxmail.org> 2020 - 2023
|
|
|
|
set -u
|
|
|
|
tmp_updates=$(mktemp -d /tmp/updates_void.XXXX)
|
|
xbps-install -nuM 1>"${tmp_updates}"/updates 2>"${tmp_updates}"/error
|
|
|
|
updates="$(awk 'END {print NR}' "${tmp_updates}"/updates)"
|
|
broken="$(grep -c broken "${tmp_updates}"/error)"
|
|
pkgs="$(awk '{printf "%-30s %s\n", $1, $2}' "${tmp_updates}"/updates)"
|
|
|
|
deps() {
|
|
if ! command -v dzen2 >/dev/null; then
|
|
printf '%b\n' "Dependencia no satisfecha:\n\tInstale dzen2\n"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
msg() {
|
|
dzen2 -p -fn 'Inconsolata:size=10:style=bold' -ta 5 \
|
|
-w 260 -x 1100 -y 25 -l 10
|
|
}
|
|
|
|
if deps; then
|
|
if [ "$broken" = 0 ] && [ "$updates" -ge 1 ]; then
|
|
"$HOME"/.local/bin/alert
|
|
printf '%s\n' "ACTUALIZACIONES DISPONIBLES: $updates" "$pkgs" | msg &
|
|
rm -r "${tmp_updates}"
|
|
exit 0
|
|
elif [ "$broken" -ge 1 ]; then
|
|
printf '%s\n' "HAY PAQUETES ROTOS" "$(awk '{printf "%-30s %s\n", $1, $5}' \
|
|
"${tmp_updates}"/error)" | msg &
|
|
rm -r "${tmp_updates}"
|
|
exit 3
|
|
else
|
|
[ -z "$updates" ] || rm -r "${tmp_updates}"
|
|
exit 4
|
|
fi
|
|
fi
|