64 lines
1.6 KiB
Bash
64 lines
1.6 KiB
Bash
#!/bin/bash
|
|
|
|
function install_package() {
|
|
local pkg="$1"
|
|
|
|
if command -v "$pkg" &>/dev/null; then
|
|
return 0
|
|
fi
|
|
|
|
msg "El paquete $pkg no se encontró. Procediendo a instalar..." \
|
|
"$pkg not found. Attempting to install..."
|
|
|
|
local INSTALLER=""
|
|
local SUDO=""
|
|
local USER_CMD=$(command -v sudo || command -v doas)
|
|
|
|
[[ "$(id -u)" -ne 0 ]] && SUDO="$USER_CMD"
|
|
|
|
local OS_ID=""
|
|
if [ -f /etc/os-release ]; then
|
|
OS_ID=$(grep "^ID=" /etc/os-release | head -n1 | cut -d= -f2 | tr -d '"')
|
|
OS_ID=${OS_ID,,}
|
|
fi
|
|
|
|
case "$OS_ID" in
|
|
arch|manjaro|artix|hyperbola)
|
|
INSTALLER="pacman -Sy --noconfirm $pkg"
|
|
;;
|
|
debian|ubuntu|linuxmint|elementary|pop)
|
|
INSTALLER="apt-get update && apt-get install -y $pkg"
|
|
;;
|
|
fedora)
|
|
INSTALLER="dnf install -y $pkg"
|
|
;;
|
|
void)
|
|
INSTALLER="xbps-install -Sy $pkg"
|
|
;;
|
|
gentoo)
|
|
INSTALLER="emerge app-arch/$pkg"
|
|
;;
|
|
alpine)
|
|
INSTALLER="apk add $pkg"
|
|
;;
|
|
*)
|
|
msg_err "Distro no compatible con la instalación automática de $pkg." \
|
|
"Unsupported distro for automatic $pkg installation."
|
|
return 1
|
|
;;
|
|
esac
|
|
|
|
msg "Ejecutando instalación con: $SUDO $INSTALLER" \
|
|
"Running install command: $SUDO $INSTALLER"
|
|
|
|
$SUDO bash -c "$INSTALLER"
|
|
|
|
if command -v "$pkg" &>/dev/null; then
|
|
return 0
|
|
else
|
|
msg_err "Falló al instalar: $pkg" \
|
|
"Failed to install $pkg."
|
|
return 1
|
|
fi
|
|
}
|