diff --git a/varios/xpkglocal.sh b/varios/xpkglocal.sh index 4cb1265..500bce1 100755 --- a/varios/xpkglocal.sh +++ b/varios/xpkglocal.sh @@ -5,15 +5,14 @@ # # Shell: POSIX compliant # Autor: O. Sánchez +# v1.0 set -u -unset POSIXLY_CORRECT -TMP_DIR=$(mktemp /tmp/xpkglocal.XXXXXXXXXX) -mkdir "${TMP_DIR}" +TMP_DIR=$(mktemp -d /tmp/xpkglocal.XXXXXXXXXX) which_sudo() { - if command -v sudo >/dev/null && sudo -l | grep -q -e ' ALL$' -e xbps-install; then + if command -v sudo >/dev/null && id | grep -q wheel; then echo sudo elif command -v doas >/dev/null && [ -f /etc/doas.conf ]; then echo doas @@ -22,11 +21,13 @@ which_sudo() { fi } +admin=$(which_sudo) + do_install() { - if [ "$SUDO" = su ]; then + if [ "$admin" = su ]; then su root -c 'xbps-install "$@"' -- sh "$@" else - $SUDO xbps-install "$@" + $admin xbps-install "$@" fi } @@ -36,15 +37,11 @@ msg(){ } # 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 +for cmd in xpkg dzen2; do + if ! command -v $cmd >/dev/null 2>&1; then + printf '%b' "\033[31;5m[ERROR] '$cmd' es requerido, instalando el paquete...\033[0m\n" + fi +done if [ ! -f "$HOME/void-packages/xbps-src" ]; then printf '%s\n' "No se encontró repositorio git de Void Linux. Clonadolo..." @@ -71,8 +68,8 @@ 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 & + rm -rf ${TMP_DIR} + exit 0 +else + rm -rf ${TMP_DIR} fi - -rm -r "$TMP_DIR" - -exit 0