diff --git a/installJRMC b/installJRMC index d80af82..5d7a571 100755 --- a/installJRMC +++ b/installJRMC @@ -228,12 +228,14 @@ parseInput() { ####################################### -# Perform OS detection and apply compatability overrides +# Perform OS detection and fallback assignment +# Generate OS-specific functions ####################################### -getOS() { +init() { debug "Running: ${FUNCNAME[0]}" - declare -g ID RPM_MGR + declare -g ID + declare rpm_mgr if [[ -e "/etc/os-release" ]]; then source "/etc/os-release" @@ -252,9 +254,9 @@ getOS() { ;; centos|fedora) if hash dnf &>/dev/null; then - RPM_MGR="dnf" + rpm_mgr="dnf" elif hash yum &>/dev/null; then - RPM_MGR="yum" + rpm_mgr="yum" fi ;; rhel) @@ -270,10 +272,10 @@ getOS() { echo "Autodetecting distro, this may be unreliable and --compat may also be required" if hash dnf &>/dev/null; then ID="fedora" - RPM_MGR="dnf" + rpm_mgr="dnf" elif hash yum &>/dev/null; then ID="centos" - RPM_MGR="yum" + rpm_mgr="yum" COMPAT_SWITCH=1 elif hash apt &>/dev/null; then ID="ubuntu" @@ -286,6 +288,42 @@ getOS() { esac debug "Using host platform: $ID $VERSION_ID" + + # Set distro-specific functions + case "$ID" in + fedora|centos) + pkg_install(){ sudo "$rpm_mgr" install -y "$@"; } + pkg_install_local() { installMCRPM; } + pkg_remove(){ sudo "$rpm_mgr" remove -y "$@"; } + pkg_update(){ sudo "$rpm_mgr" makecache; } + pkg_query(){ rpm -q "$@"; } + firewall_cmd(){ sudo firewall-cmd "$@"; } + ;; + debian|ubuntu) + pkg_install(){ sudo apt-get install -y -q0 "$@"; } + pkg_install_local() { installMCDEB; } + pkg_remove(){ sudo apt-get remove --auto-remove -y -q0 "$@"; } + pkg_update(){ sudo apt-get update -y -q0; } + pkg_query(){ dpkg -s "$@"; } + firewall_cmd(){ sudo ufw "$@"; } + ;; + suse) + pkg_install(){ sudo zypper --non-interactive -q install --force --no-confirm "$@"; } + pkg_install_local() { installMCRPM; } + pkg_remove(){ sudo zypper --non-interactive -q remove --clean-deps "$@"; } + pkg_update(){ sudo zypper --non-interactive -q refresh jriver; } + pkg_query(){ rpm -q "$@"; } + firewall_cmd(){ sudo firewall-cmd "$@"; } + ;; + arch) + pkg_install(){ sudo pacman -Sy --noconfirm "$@"; } + pkg_install_local() { installMCARCH; } + pkg_remove(){ sudo pacman -Rs --noconfirm "$@"; } + pkg_update(){ sudo pacman -Syy ; } + pkg_query(){ sudo pacman -Qs "$@"; } + #firewall_cmd(){ sudo nft -A INPUT "$@"; } + ;; + esac } @@ -731,7 +769,6 @@ installMCRPM() { installMCARCH() { debug "Running: ${FUNCNAME[0]}" echo "Arch install under construction" - } @@ -1501,9 +1538,8 @@ tests() { main() { - debug "Running: ${FUNCNAME[0]}" - getOS + init parseInput "$@" @@ -1512,42 +1548,6 @@ main() { echo "installJRMC version: $SCRIPTVERSION" fi - # Distro-specific commands - case "$ID" in - fedora|centos) - pkg_install(){ sudo "$RPM_MGR" install -y "$@"; } - pkg_install_local() { installMCRPM; } - pkg_remove(){ sudo "$RPM_MGR" remove -y "$@"; } - pkg_update(){ sudo "$RPM_MGR" makecache; } - pkg_query(){ rpm -q "$@"; } - firewall_cmd(){ sudo firewall-cmd "$@"; } - ;; - debian|ubuntu) - pkg_install(){ sudo apt-get install -y -q0 "$@"; } - pkg_install_local() { installMCDEB; } - pkg_remove(){ sudo apt-get remove --auto-remove -y -q0 "$@"; } - pkg_update(){ sudo apt-get update -y -q0; } - pkg_query(){ dpkg -s "$@"; } - firewall_cmd(){ sudo ufw "$@"; } - ;; - suse) - pkg_install(){ sudo zypper --non-interactive -q install --force --no-confirm "$@"; } - pkg_install_local() { installMCRPM; } - pkg_remove(){ sudo zypper --non-interactive -q remove --clean-deps "$@"; } - pkg_update(){ sudo zypper --non-interactive -q refresh jriver; } - pkg_query(){ rpm -q "$@"; } - firewall_cmd(){ sudo firewall-cmd "$@"; } - ;; - arch) - pkg_install(){ sudo pacman -Sy --noconfirm "$@"; } - pkg_install_local() { installMCARCH; } - pkg_remove(){ sudo pacman -Rs --noconfirm "$@"; } - pkg_update(){ sudo pacman -Syy ; } - pkg_query(){ sudo pacman -Qs "$@"; } - #firewall_cmd(){ sudo nft -A INPUT "$@"; } - ;; - esac - if ((TEST_SWITCH)); then echo "Running tests, all other options are skipped" tests