refactor(script/bootstrap): Checks and stuff

* Use case to check package manager for easier control
* Finally use `install_aur_packages` function
  * Add a check to make sure it won't run on distro other than arch
  * Add a check to make sure AUR helper is already installed
* Add extra check to make sure package is not empty
This commit is contained in:
Ahmad Ansori Palembani 2024-07-19 19:01:45 +07:00
parent 28b29c3487
commit 7e0770387b
Signed by: null2264
GPG key ID: BA64F8B60AF3EFB6

View file

@ -16,16 +16,55 @@ packages_arch=(
ffmpeg4.4 ffmpeg4.4
) )
packages_arch_aur=(
)
# === Function and Variable === # === Function and Variable ===
DISTRO="$(cat /etc/*-release | grep ^ID | head -n1 | cut -d '=' -f2 | cut -d '"' -f2)"
SUDO="${SUDO:-sudo}" SUDO="${SUDO:-sudo}"
PACMAN="${PACMAN:-pacman}" PACMAN="${PACMAN:-pacman}"
AUR="${AUR:-paru}" AUR="${AUR:-paru}"
is_package_exists() {
[ $(command -v "$1" | wc -l) -gt 0 ] && echo 1 || echo 0
}
update_package_db() {
MSG_FAILED="Failed to update package database, skipping..."
case "$PACMAN" in
"pacman" )
$SUDO $PACMAN -Sy || echo $MSG_FAILED
;;
"apt" )
$SUDO $PACMAN update || echo $MSG_FAILED
;;
esac
}
install_package() { install_package() {
[ $PACMAN = "pacman" ] && { $SUDO $PACMAN -S --noconfirm "$@" || echo "Failed to install some packages, skipping..."; } [ "$1" = "" ] && { echo "No package candidate is specified, skipping..."; return; }
MSG_FAILED="Failed to install some packages, skipping..."
case "$PACMAN" in
"pacman" )
$SUDO $PACMAN -S --noconfirm "$@" || echo $MSG_FAILED
;;
"apt" )
$SUDO $PACMAN install "$@" || echo $MSG_FAILED
;;
esac
} }
install_aur_package() { install_aur_package() {
# >> Paranoia checks
[ $DISTRO = "arch" ] || { echo "AUR only available in Arch, skipping..."; return; }
[ $(is_package_exists $AUR) = 1 ] || { echo "AUR helper '$AUR' is not installed, skipping..."; return; }
[ "$1" = "" ] && { echo "No AUR package candidate is specified, skipping..."; return; }
# <<
$AUR -S --noconfirm "$@" $AUR -S --noconfirm "$@"
} }
@ -36,11 +75,16 @@ ln -si $ZI_DOTFILES/.config/xinitrc $HOME/.xinitrc
ln -si $ZI_DOTFILES/.config/xprofile $HOME/.xprofile ln -si $ZI_DOTFILES/.config/xprofile $HOME/.xprofile
echo "Updating package database..." echo "Updating package database..."
[ $PACMAN = "pacman" ] && { $SUDO $PACMAN -Sy || echo "Failed to update package database, skipping..."; } update_package_db
echo "Installing packages..." echo "Installing packages..."
install_package $packages_arch install_package $packages_arch
[ $DISTRO = "arch" ] && {
echo "Installing AUR packages..."
install_aur_package $packages_arch_aur
}
echo "Changing default shell to zsh..." echo "Changing default shell to zsh..."
sudo chsh -s $(which zsh) sudo chsh -s $(which zsh)