some bash optimisations

This commit is contained in:
pika 2025-03-22 00:09:45 +01:00
parent 2ef559dd36
commit c7fba3ac7f

View file

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