From 4d57d696262e730cee27a4aeec2e284aeed6ffc1 Mon Sep 17 00:00:00 2001 From: Menno van Leeuwen Date: Wed, 22 Jan 2025 15:29:45 +0100 Subject: [PATCH] refactor: add package installation function to streamline dependency checks --- setup.sh | 27 ++++++++++++++++++++++----- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/setup.sh b/setup.sh index 96aecf4..79785bc 100755 --- a/setup.sh +++ b/setup.sh @@ -365,6 +365,25 @@ check_command_availibility() { fi } +attempt_package_install() { + local package="$1" + local package_manager="$2" + local install_command="$3" + + if ! command -v "$package" >/dev/null 2>&1; then + log_info "Installing $package using $package_manager..." + if [ "$package_manager" = "dnf" ]; then + sudo dnf install "$package" || die "Failed to install $package" + elif [ "$package_manager" = "apt" ]; then + sudo apt install "$package" || die "Failed to install $package" + elif [ "$package_manager" = "pacman" ]; then + sudo pacman -S "$package" || die "Failed to install $package" + else + die "Unsupported package manager: $package_manager" + fi + fi +} + # Check compatibility checks for supported distros: # - Fedora # - Ubuntu @@ -375,11 +394,9 @@ check_compatibility() { die "This script was designed to run using bash, please run using bash" fi - check_command_availibility "awk" - check_command_availibility "tail" - check_command_availibility "echo" - check_command_availibility "git" - check_command_availibility "sudo" + attempt_package_install "awk" + attempt_package_install "tail" + attempt_package_install "git" local distro distro=$(awk -F= '/^NAME/{print $2}' /etc/os-release | tr -d '"')