scripts/varios/xpkglocal.sh

79 lines
2.0 KiB
Bash
Raw Normal View History

#!/bin/sh
# Script para consultar el sitio de origen del paquete (upstream) en busca de nuevas versiones.
# Se recomienda añadir este script en una tarea de crontab
# Dependencias: xbps-src, xtools, dzen2
#
# Shell: POSIX compliant
# Autor: O. Sánchez <o-sanchez@linuxmail.org>
set -u
unset POSIXLY_CORRECT
TMP_DIR=$(mktemp /tmp/xpkglocal.XXXXXXXXXX)
mkdir "${TMP_DIR}"
which_sudo() {
if command -v sudo >/dev/null && sudo -l | grep -q -e ' ALL$' -e xbps-install; then
echo sudo
elif command -v doas >/dev/null && [ -f /etc/doas.conf ]; then
echo doas
elif [ "$(id -u)" != 0 ]; then
echo su
fi
}
do_install() {
if [ "$SUDO" = su ]; then
su root -c 'xbps-install "$@"' -- sh "$@"
else
$SUDO xbps-install "$@"
fi
}
msg(){
dzen2 -p -fn 'JetBrains Mono:size=8:style=bold' -ta 5 \
-w 260 -x 1100 -y 25 -l 20
}
# Verificar que las dependencias estén instaladas
if ! command -v xpkg >/dev/null; then
printf '%s\n' "Instalando paquete xtools"
SUDO=$(which_sudo)
do_install -Sy xtools
elif ! command -v dzen2 > /dev/null; then
printf '%s\n' "Instalando paquete dzen2"
SUDO=$(which_sudo)
do_install -Sy dzen2
fi
if [ ! -f "$HOME/void-packages/xbps-src" ]; then
printf '%s\n' "No se encontró repositorio git de Void Linux. Clonadolo..."
git -C "$HOME" clone --depth=1 https://github.com/void-linux/void-packages.git
cd "$HOME"/void-packages || exit
./xbps-src binary-bootstrap
echo XBPS_ALLOW_RESTRICTED=yes >> etc/conf
fi
# Crear lista de actualizaciones disponibles
:> "${TMP_DIR}"/releases
cd "$HOME"/void-packages || exit
for package in $(xpkg -m); do
./xbps-src update-check "$package" | tail -n 1 | tee -a "${TMP_DIR}"/releases > /dev/null
done
uniq "${TMP_DIR}"/releases > "${TMP_DIR}"/upstream_releases
UPDATES="$(wc -l < "${TMP_DIR}"/upstream_releases)"
RELEASES="$(awk '{print $1"\t"$3}' "${TMP_DIR}"/upstream_releases | column -t)"
if [ "$UPDATES" -gt 0 ]; then
printf '%s\n' "$RELEASES"
printf '%s\n' "ACTUALIZACIONES EN UPSTREAM: $UPDATES" "$RELEASES" | msg &
fi
rm -r "$TMP_DIR"
exit 0