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_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
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__