hotfix install packages to gnu/linux distros - install.sh
All checks were successful
CI Pipeline / shasums (push) Successful in 20s
git-sync-with-mirror / git-sync (push) Successful in 34s
CI Pipeline / build (push) Successful in 2m56s

This commit is contained in:
Astound 2025-05-23 14:51:34 -05:00
parent 14ae23997e
commit 096ffbaed4
Signed by: kaiser
GPG Key ID: 97504AF0027B1A56

View File

@ -27,32 +27,54 @@ function msg_err() {
esac esac
} }
# ----------
# Get OS ID
# ----------
function get_os_id() {
cat /etc/*release 2>/dev/null |
tr '[:upper:]' '[:lower:]' |
grep "^id=" | head -n1 | cut -d= -f2 | tr -d '"'
}
# -------------------------
# Map programs to packages
# -------------------------
function map_program_to_package() {
local program="$1"
local os="$2"
case "$program" in
ls) echo "coreutils" ;;
iproute2)
case "$os" in
fedora|rhel|centos|amzn|rocky|almalinux) echo "iproute" ;;
*) echo "iproute2" ;;
esac
;;
*) echo "$program" ;;
esac
}
# ---------------------
# Check Requirements # Check Requirements
# ------------------- # -------------------
function install_package() { function install_package() {
local pkg="$1" local pkg="$1"
local os="$2"
local sudo_cmd="" local sudo_cmd=""
local OS_ID=""
# Determine if root or use sudo/doas
case "$(id -u)" in case "$(id -u)" in
0) sudo_cmd="" ;; 0) sudo_cmd="" ;;
*) *)
case "$(command -v doas 2>/dev/null)" in if command -v doas &>/dev/null; then
"") sudo_cmd="sudo" ;; sudo_cmd="doas"
*) sudo_cmd="doas" ;; else
esac sudo_cmd="sudo"
fi
;; ;;
esac esac
# Get OS ID (e.g., arch, debian, ubuntu, fedora, alpine, etc.) case "$os" in
OS_ID=$(
cat /etc/*release 2>/dev/null |
tr '[:upper:]' '[:lower:]' |
grep "^id=" | head -n1 | cut -d= -f2 | tr -d '"'
)
case "$OS_ID" in
arch|manjaro|endeavouros|hyperbola|artix) arch|manjaro|endeavouros|hyperbola|artix)
$sudo_cmd pacman -Sy --noconfirm "$pkg" $sudo_cmd pacman -Sy --noconfirm "$pkg"
;; ;;
@ -76,32 +98,37 @@ function install_package() {
$sudo_cmd apk add --no-cache "$pkg" $sudo_cmd apk add --no-cache "$pkg"
;; ;;
*) *)
msg_err "Sistema operativo no soportado: $OS_ID" "Unsupported OS: $OS_ID" msg_err "Sistema operativo no soportado: $os" "Unsupported OS: $os"
exit 1 exit 1
;; ;;
esac esac
} }
programs=("curl" "less" "ls" "iproute2" "unzip") # ---------------------------
for program in "${programs[@]}"; do # Check and install programs
if ! command -v "$program" &>/dev/null; then # ---------------------------
case "$program" in function check_and_install_programs() {
ls) pkg="coreutils" ;; local os_id
iproute2) os_id=$(get_os_id)
case "$OS_ID" in local programs=("curl" "less" "ls" "iproute2" "unzip")
fedora|rhel|centos) pkg="iproute" ;;
*) pkg="iproute2" ;;
esac
;;
*) pkg="$program" ;;
esac
msg "Instalando dependencia: $pkg" "Installing dependency: $pkg"
install_package "$pkg"
fi
done
for prog in "${programs[@]}"; do
if ! command -v "$prog" &>/dev/null; then
local pkg
pkg=$(map_program_to_package "$prog" "$os_id")
msg "Instalando dependencia: $pkg" "Installing dependency: $pkg"
install_package "$pkg" "$os_id"
fi
done
}
# ---------------------
# Install dependencies
# ---------------------
check_and_install_programs "$@"
# ------------------------
# Check URLs availability # Check URLs availability
# ----------------------- # ------------------------
function _url_exists() { function _url_exists() {
curl --output /dev/null --silent --head --write-out "%{http_code}" "$1" curl --output /dev/null --silent --head --write-out "%{http_code}" "$1"
} }
@ -124,6 +151,7 @@ function _urls() {
esac esac
} }
# -----------
# Show usage # Show usage
# ----------- # -----------
function show_usage() { function show_usage() {
@ -142,6 +170,7 @@ function show_usage() {
exit 0 exit 0
} }
# --------------------------
# Download and unzip archive # Download and unzip archive
# -------------------------- # --------------------------
function download_and_unzip() { function download_and_unzip() {
@ -182,8 +211,9 @@ function download_and_unzip() {
rm -rf "$TMP_DIR" rm -rf "$TMP_DIR"
} }
# -------------------
# Backup and install # Backup and install
# ------------------ # -------------------
function backup_and_install() { function backup_and_install() {
download_and_unzip download_and_unzip
@ -197,8 +227,9 @@ function backup_and_install() {
"\033[0;36mTemplate copied to ~/$CONFIG_FILE \033[0m" "\033[0;36mTemplate copied to ~/$CONFIG_FILE \033[0m"
} }
# -----------
# Parse args # Parse args
# ---------- # -----------
for param in "$@"; do for param in "$@"; do
shift shift
case "$param" in case "$param" in
@ -220,7 +251,9 @@ while getopts "hsn" opt; do
done done
shift $((OPTIND - 1)) shift $((OPTIND - 1))
# ------------------------------
# Setup config file based on OS # Setup config file based on OS
# ------------------------------
case "$OSTYPE" in case "$OSTYPE" in
darwin*) CONFIG_FILE=".bash_profile" ;; darwin*) CONFIG_FILE=".bash_profile" ;;
*) CONFIG_FILE=".bashrc" ;; *) CONFIG_FILE=".bashrc" ;;