Parcourir la source

Cleanup installPackage()

bryan il y a 3 ans
Parent
commit
f0d93ef8d7
1 fichiers modifiés avec 47 ajouts et 66 suppressions
  1. 47 66
      installJRMC

+ 47 - 66
installJRMC

@@ -22,7 +22,7 @@ _exec_user="$(whoami)"
 
 # Version control
 _boardurl="https://yabb.jriver.com/interact/index.php/board,71.0.html" # Media Center 28, only required if buildah is unavailable
-# _mcversion="28.0.84" # set manually
+# _mcversion="28.0.84" # to set manually
 
 printHelp() {
     debug "Running: ${FUNCNAME[0]}"
@@ -114,7 +114,6 @@ init() {
     if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
         pkg_install(){ ifSudo dnf install -y "$@"; }
         pkg_reinstall(){ ifSudo dnf reinstall -y "$@"; }
-        pkg_install_nogpg(){ ifSudo dnf install --nogpgcheck -y "$@"; }
         pkg_remove(){ ifSudo dnf remove -y "$@"; }
         pkg_update(){ ifSudo dnf makecache; }
         pkg_query(){ ifSudo rpm -q "$@"; }
@@ -122,7 +121,6 @@ init() {
     elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
         pkg_install(){ ifSudo apt-get install -y -q0 "$@"; }
         pkg_reinstall(){ ifSudo apt-get reinstall -y -q0 "$@"; }
-        pkg_install_nogpg(){ ifSudo apt-get install -y -q0 "$@"; }
         pkg_remove(){ ifSudo apt-get remove --auto-remove -y -q0 "$@"; }
         pkg_update(){ ifSudo apt-get update -y -q0; }
         pkg_query(){ ifSudo dpkg -s "$@"; }
@@ -306,6 +304,7 @@ getLatestVersion() {
     declare -g _mcversion
 
     # Use a containerized package manager
+    # TODO but how to determine build distro ('buster')?
     [[ ! -x $(command -v buildah) ]] && installPackage --silent buildah
     if [[ -x $(command -v buildah) ]] && CNT=$(buildah from ubuntu:18.04); then 
         buildah run "$CNT" -- bash -c \
@@ -333,18 +332,28 @@ getLatestVersion() {
 # Arguments:
 #   One or more package names
 # Options:
-#   --noquery, -n: Do not query the package state (useful if installing a local RPM)
-#   --silent, -s: Do not report errors (useful if package is not strictly required)
+#   --no-check: Do not check if package is already installed
+#   --no-gpg: Disable GPG checks for RPM based distros
+#   --silent, -s: Do not report errors (useful if package is not strictly required and errors are noisy)
 #######################################
 installPackage() {
     debug "Running: ${FUNCNAME[0]}" "$@"
 
-    if _input=$(getopt -o +ns -l noquery,silent -- "$@"); then
+    local -a _pkg_array
+    local -a _pkg
+    local _gpg=""
+
+    if _input=$(getopt -o +s -l no-check,no-gpg,silent -- "$@"); then
         eval set -- "$_input"
         while true; do
             case "$1" in
-                --noquery|-n)
-                    local _noquery="true"
+                --no-check)
+                    local _no_check=true
+                    ;;
+                --no-gpg)
+                    if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
+                        _gpg="--nogpgcheck"
+                    fi
                     ;;
                 --silent|-s)
                     local _silent=true
@@ -361,54 +370,33 @@ installPackage() {
         exit 1
     fi
 
-    local -a _pkg_array _url_pkg_array
-    local -a _pkg
-
-    # Parse packages
     for _pkg in "$@"; do
+        # Check for alias
         [[ -v PKG_ALIASES && -v PKG_ALIASES["$_pkg"] ]] && _pkg=PKG_ALIASES["$_pkg"]
-        # Insert the package name to test if already installed
-        if [[ -v _noquery ]] || ! pkg_query "$_pkg" > /dev/null 2>&1; then
-            if [[ -v _url_pkg ]]; then
-                _url_pkg_array+=("$_url_pkg")
-            else
-                _pkg_array+=("$_pkg")
-            fi
+        # Check if already installed
+        if [[ -v _no_check ]] || ! pkg_query "$_pkg" > /dev/null 2>&1; then
+            _pkg_array+=("$_pkg")
         fi
     done
 
-    # Install from package name (with gpg check)
+    # Install from package name
     if [[ ${#_pkg_array[@]} -ge 1 ]]; then
-        [[ ! -v _silent ]] && echo "Installing:" "${_pkg_array[@]}"
-        if debug; then
-            if ! pkg_install "${_pkg_array[@]}"; then
-                [[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
-                return 1
-            fi
-        elif ! pkg_install "${_pkg_array[@]}" > /dev/null 2>&1; then
-            [[ ! -v _silent ]] && err "Failed to install ${_pkg_array[*]}. Attempting to continue..."
-            return 1
-        fi
-    fi
-
-    # Install from package url (without gpg check)
-    if [[ ${#_url_pkg_array[@]} -ge 1 ]]; then
-        [[ ! -v _silent ]] && echo "Installing: " "${_url_pkg_array[@]}"
+        debug "Installing: ${_pkg_array[*]}"
         if debug; then
-            if ! pkg_install_nogpg "${_url_pkg_array[@]}"; then
-                [[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
-                return 1
-            fi
-        elif ! pkg_install_nogpg "${_url_pkg_array[@]}" > /dev/null 2>&1; then
-            [[ ! -v _silent ]] && err "Failed to install package. Attempting to continue..."
-            return 1
+            debug "pkg_install $_gpg ${_pkg_array[*]}"
+            pkg_install "$_gpg" "${_pkg_array[@]}"
+        else
+            pkg_install "$_gpg" "${_pkg_array[@]}" > /dev/null 2>&1
         fi
+        local _return=$?       
+        [[ $_return -ne 0 && ! -v _silent ]] && err "Failed to install ${_pkg_array[*]}. Attempting to continue..."
+        return $_return
     fi
 }
 
 
 #######################################
-# Adds the JRiver repos
+# Add the JRiver repository files
 #######################################
 addRepo() {
     debug "Running: ${FUNCNAME[0]}"
@@ -441,7 +429,7 @@ installMCFromRepo() {
 
     if ! debug; then
         echo "This may take a few minutes to complete."
-        echo "Use --debug for more verbose output."
+        echo "Use --debug for verbose output."
     fi
 
     addRepo
@@ -461,24 +449,17 @@ installMCFromRepo() {
 
     if [[ -v _specific_version ]]; then
         if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
-            if debug; then
-                installPackage "$_mcpkg-$_mcversion"
-            else
-                installPackage "$_mcpkg-$_mcversion" > /dev/null 2>&1
-            fi
+            _mcpkg="$_mcpkg-$_mcversion"
         elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
-            if debug; then
-                installPackage "$_mcpkg=$_mcversion"
-            else
-                installPackage "$_mcpkg=$_mcversion" > /dev/null 2>&1
-            fi
+            _mcpkg="$_mcpkg=$_mcversion"
         fi
+    fi
+
+    if debug; then
+        debug "installPackage $_mcpkg"
+        installPackage "$_mcpkg"
     else
-        if debug; then
-            installPackage "$_mcpkg"
-        else
-            installPackage "$_mcpkg" > /dev/null 2>&1
-        fi
+        installPackage "$_mcpkg" > /dev/null 2>&1
     fi
 
     return $?
@@ -514,12 +495,12 @@ acquireDeb() {
     "https://files.jriver.com/mediacenter/channels/v$_mversion/latest/MediaCenter-$_mcversion-amd64.deb"; then
         echo "Found!"
     else
-        err "Cannot find DEB file. Exiting..."
+        err "Cannot find DEB file."
         exit 1
     fi
 
     if [[ ! -f "$DEBFILENAME" ]]; then
-        err "Downloaded DEB file missing or corrupted, exiting..."
+        err "Downloaded DEB file missing or corrupted."
         exit 1
     fi
 }
@@ -1183,9 +1164,9 @@ uninstall() {
 
     echo "Uninstalling Media Center packages"
     if [[ "$ID" =~ ^(fedora|centos)$ ]]; then
-        pkg_remove "MediaCenter"
+        pkg_remove "-q" "MediaCenter"
     elif [[ "$ID" =~ ^(debian|ubuntu|linuxmint)$ ]]; then
-        pkg_remove "mediacenter$_mversion"
+        pkg_remove "-q" "mediacenter$_mversion"
     fi
 
     echo "JRiver Media Center has been completely uninstalled"
@@ -1195,7 +1176,7 @@ uninstall() {
 
 
 tests() {
-    # To test on Mint: sudo apt-get install -y spice-vdagent ca-certificates git
+    # To test on Mint: sudo apt-get install -y spice-vdagent ca-certificates git; export GIT_SSL_NO_VERIFY=1
     exit $?
 }
 
@@ -1228,7 +1209,7 @@ main() {
     if [[ -v _build ]]; then
         acquireDeb
         if ! buildRPM || [[ ! -f "$_mcrpm" ]] ; then
-            err "Build failed. Exiting..."
+            err "Build failed."
             [[ -f "$DEBFILENAME" ]] && echo "Removing source DEB" && rm -f "$DEBFILENAME"
             exit 1
         else
@@ -1243,7 +1224,7 @@ main() {
 
     # Install RPM
     if [[ -v _install && "$_install" == "rpm" ]]; then
-        installPackage --noquery "$_mcrpm"
+        installPackage --no-check "$_mcrpm"
         symlinkCerts
         restoreLicense
         openFirewall "jriver"