99 lines
1.9 KiB
Bash
Executable File
99 lines
1.9 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -e
|
|
|
|
# List of apps to install
|
|
APPS=(
|
|
git
|
|
curl
|
|
vim
|
|
htop
|
|
)
|
|
|
|
# Detect package manager
|
|
detect_package_manager() {
|
|
if command -v apt >/dev/null 2>&1; then
|
|
PKG_MANAGER="apt"
|
|
elif command -v dnf >/dev/null 2>&1; then
|
|
PKG_MANAGER="dnf"
|
|
elif command -v yum >/dev/null 2>&1; then
|
|
PKG_MANAGER="yum"
|
|
elif command -v pacman >/dev/null 2>&1; then
|
|
PKG_MANAGER="pacman"
|
|
elif command -v zypper >/dev/null 2>&1; then
|
|
PKG_MANAGER="zypper"
|
|
elif command -v apk >/dev/null 2>&1; then
|
|
PKG_MANAGER="apk"
|
|
else
|
|
echo "Unsupported package manager."
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# Check if package is installed
|
|
is_installed() {
|
|
local pkg="$1"
|
|
|
|
case "$PKG_MANAGER" in
|
|
apt)
|
|
dpkg -s "$pkg" >/dev/null 2>&1
|
|
;;
|
|
dnf|yum)
|
|
rpm -q "$pkg" >/dev/null 2>&1
|
|
;;
|
|
pacman)
|
|
pacman -Qi "$pkg" >/dev/null 2>&1
|
|
;;
|
|
zypper)
|
|
rpm -q "$pkg" >/dev/null 2>&1
|
|
;;
|
|
apk)
|
|
apk info -e "$pkg" >/dev/null 2>&1
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Install package
|
|
install_package() {
|
|
local pkg="$1"
|
|
|
|
case "$PKG_MANAGER" in
|
|
apt)
|
|
sudo apt update
|
|
sudo apt install -y "$pkg"
|
|
;;
|
|
dnf)
|
|
sudo dnf install -y "$pkg"
|
|
;;
|
|
yum)
|
|
sudo yum install -y "$pkg"
|
|
;;
|
|
pacman)
|
|
sudo pacman -Sy --noconfirm "$pkg"
|
|
;;
|
|
zypper)
|
|
sudo zypper install -y "$pkg"
|
|
;;
|
|
apk)
|
|
sudo apk add "$pkg"
|
|
;;
|
|
esac
|
|
}
|
|
|
|
detect_package_manager
|
|
|
|
echo "Detected package manager: $PKG_MANAGER"
|
|
echo
|
|
|
|
for app in "${APPS[@]}"; do
|
|
if is_installed "$app"; then
|
|
echo "[OK] $app is already installed."
|
|
else
|
|
echo "[INSTALL] Installing $app..."
|
|
install_package "$app"
|
|
fi
|
|
done
|
|
|
|
echo
|
|
echo "Done."
|