127 lines
3.4 KiB
Bash
127 lines
3.4 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Logging function
|
|
log() {
|
|
printf "$(tput setaf 4)$(tput bold)>>>>> %s <<<<<$(tput sgr0)\n" "$1"
|
|
}
|
|
|
|
inf() {
|
|
printf "$(tput setaf 2)╚═══ᐳ $(tput sgr 0 1)$(tput setaf 2)%s$(tput sgr0)\n" "$1"
|
|
}
|
|
|
|
err() {
|
|
printf "$(tput setaf 9)$(tput bold)>>>>> %s ! <<<<<$(tput sgr0)\n" "$1"
|
|
}
|
|
|
|
# Function to determine the package manager if not specified
|
|
determine_package_manager() {
|
|
if [ $(command -v apt-get) ]; then
|
|
echo "apt"
|
|
elif [ $(command -v pamac) ]; then
|
|
echo "pamac"
|
|
elif [ $(command -v yay) ]; then
|
|
echo "yay"
|
|
elif [ $(command -v pacman) ]; then
|
|
echo "pacman"
|
|
else
|
|
err "No supported package manager found."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Simple abstraction to install a binary using a supported package manager
|
|
install_binary() {
|
|
# Example usage:
|
|
# install_binary "fzf"
|
|
# install_binary "fzf" "dnf"
|
|
|
|
local package_name="${1}"
|
|
local package_manager="${2}"
|
|
|
|
# If the package manager is not specified, determine it
|
|
if [[ -z "${package_manager}" ]]; then
|
|
package_manager=$(determine_package_manager)
|
|
fi
|
|
|
|
# Install the package using the determined or specified package manager
|
|
inf "installing ${package_name} using ${package_manager}..."
|
|
|
|
case "${package_manager}" in
|
|
apt)
|
|
sudo apt-get install --yes --no-install-recommends --ignore-missing --fix-broken -qq "${package_name}" || {
|
|
err "Installation failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
pacman)
|
|
sudo pacman -S --needed --noconfirm --quiet "${package_name}" || {
|
|
err "Installation failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
pamac)
|
|
sudo pamac install --no-confirm "${package_name}" || {
|
|
err "Installation failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
yay)
|
|
sudo yay -S --noconfirm --removemake --quiet "${package_name}" || {
|
|
err "Installation failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
*)
|
|
err "Unsupported package manager: ${package_manager}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
inf "installation of ${package_name} completed successfully."
|
|
}
|
|
|
|
update_system() {
|
|
local package_manager="${1}"
|
|
|
|
# If the package manager is not specified, determine it
|
|
if [[ -z "${package_manager}" ]]; then
|
|
package_manager=$(determine_package_manager)
|
|
fi
|
|
|
|
# Install the package using the determined or specified package manager
|
|
inf "updating system using ${package_manager}..."
|
|
|
|
case "${package_manager}" in
|
|
apt)
|
|
sudo -E apt update -qq && sudo -E apt upgrade --yes -qq || {
|
|
err "Update failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
pacman)
|
|
sudo pacman -Syu --noconfirm --removemake --quiet || {
|
|
err "Update failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
pamac)
|
|
sudo pamac update --aur --no-confirm && sudo pamac upgrade --aur --no-confirm || {
|
|
err "Update failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
yay)
|
|
sudo yay -Syu --noconfirm --removemake --quiet || {
|
|
err "Update failed."
|
|
exit 1
|
|
}
|
|
;;
|
|
*)
|
|
err "Unsupported package manager: ${package_manager}"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
inf "system update completed successfully."
|
|
}
|