diff --git a/install.sh b/install.sh index 6a707ec..fdd8c46 100755 --- a/install.sh +++ b/install.sh @@ -31,7 +31,7 @@ command_exists() { # ─< Check if the user is root and set sudo variable if necessary >─────────────────────── check_root() { - if [ "$(id -u)" -ne 0 ]; then + if (( EUID != 0 )); then if command_exists sudo; then echo_info "User is not root. Using sudo for privileged operations." _sudo="sudo" @@ -47,40 +47,36 @@ check_root() { # ─< Distribution detection and installation >──────────────────────────────────────── get_packager() { - if [ -e /etc/os-release ]; then - echo_info "Detecting distribution..." - . /etc/os-release + pkger=( + "apt" + "pacman" + "dnf" + "apk" + "zypper" + ) - ID=$(printf "%s" "$ID" | tr '[:upper:]' '[:lower:]') - ID_LIKE=$(printf "%s" "$ID_LIKE" | tr '[:upper:]' '[:lower:]') - case "$ID" in - ubuntu | pop) _install() { $_sudo apt-get install --assume-yes "$@"; } ;; - debian) _install() { $_sudo apt-get install --assume-yes "$@"; } ;; - fedora) _install() { $_sudo dnf install -y "$@"; } ;; - alpine) _install() { $_sudo apk add "$@"; } ;; - arch | archcraft | manjaro | garuda | endeavour) _install() { $_sudo pacman -S --noconfirm "$@"; } ;; - opensuse*) _install() { $_sudo zypper in -y "$@"; } ;; - *) - if echo "$ID_LIKE" | grep -q "debian"; then + for pkger in "${pkger[@]}"; do + if command_exists "$pkger"; then + echo_info "Found package manager: $pkger" + case "$pkger" in + "apt") _install() { $_sudo apt-get install --assume-yes "$@"; } - elif echo "$ID_LIKE" | grep -q "ubuntu"; then - _install() { $_sudo apt-get install --assume-yes "$@"; } - elif echo "$ID_LIKE" | grep -q "arch"; then + ;; + "pacman") _install() { $_sudo pacman -S --noconfirm "$@"; } - elif echo "$ID_LIKE" | grep -q "fedora"; then + ;; + "dnf") _install() { $_sudo dnf install -y "$@"; } - elif echo "$ID_LIKE" | grep -q "suse"; then + ;; + "apk") + _install() { $_sudo apk add "$@"; } + ;; + "zypper") _install() { $_sudo zypper in -y "$@"; } - else - echo_error "Unsupported distribution: $ID" - return 1 - fi - ;; - esac - else - echo_error "Unable to detect distribution. /etc/os-release not found." - return 1 - fi + ;; + esac + fi + done } silentexec() { @@ -91,22 +87,22 @@ __pre_stow__() { echo_note "__pre_stow__" conf="$HOME/.config" bak_dir="$HOME/.bak" - dirs=" - btop - zsh - gBar - caja - yazi - fastfetch - hypr - kitty - neovide - rofi - swaync - waybar - wlogout - wob - " + dirs=( + "btop" + "zsh" + "gBar" + "caja" + "yazi" + "fastfetch" + "hypr" + "kitty" + "neovide" + "rofi" + "swaync" + "waybar" + "wlogout" + "wob" + ) if [ ! -d "$bak_dir" ]; then echo_info "backup dir created at $bak_dir" && @@ -116,32 +112,32 @@ __pre_stow__() { rm -rf "${bak_dir:?}/*" fi - for _dirs in $dirs; do + for _dirs in "${dirs[@]}"; do if [ -d "$conf/$_dirs" ]; then mv -f "$conf/$_dirs" "$bak_dir" fi done - h_files=" - .zshrc - .tmux.conf - .wezterm.lua - " + h_files=( + ".zshrc" + ".tmux.conf" + ".wezterm.lua" + ) - h_dirs=" - .tmux - .zsh - .icons - .themes - " + h_dirs=( + ".tmux" + ".zsh" + ".icons" + ".themes" + ) - for _f in $h_files; do + for _f in "${h_files[@]}"; do if [ -f "$HOME/$_f" ]; then mv -f "$HOME/$_f" "$bak_dir" && echo_info "Moved $_f to $bak_dir" fi done - for _d in $h_dirs; do + for _d in "${h_dirs[@]}"; do if [ -d "$HOME/$_d" ]; then mv -f "$HOME/$_d" "$bak_dir" && echo_info "Moved $_d to $bak_dir" fi @@ -282,7 +278,6 @@ pkg_optional() { echo default ;; esac - } __stow__() { @@ -318,7 +313,7 @@ main() { sleep 2 - [ "$__optional__" -eq "true" ] && + [ "$__optional__" = "true" ] && pkg_optional __monitors__