Browse Source

Use a variable for fallback mcversion

bryan 2 years ago
parent
commit
e1e0a55101
1 changed files with 23 additions and 18 deletions
  1. 23 18
      installJRMC

+ 23 - 18
installJRMC

@@ -21,7 +21,7 @@ declare -g OUTPUTDIR="$PWD/output"
 
 declare -g BOARDURL="https://yabb.jriver.com/interact/index.php/board,76.0.html" # MC30 (Buster)
 declare -g DEBIANBASE="buster"
-# declare -g DEBIANBASE_NEXT="bullseye"
+declare -g MCVERSION_HARDCODE="30.0.17" # Hardcoded fallback
 
 declare -g CREATEREPO_WEBROOT="/var/www/jriver"
 declare -g USER="${SUDO_USER:-$USER}"
@@ -46,7 +46,7 @@ printHelp() {
 		    --compat
 		        Build/install MC locally without minimum library specifiers
 		    --mcversion VERSION
-		        Specify the MC version, ex. "30.0.17" (Default: latest)
+		        Specify the MC version, ex. "30.0.17" (Default: latest version)
 		    --outputdir PATH
 		        Generate rpmbuild output in this directory (Default: ./output)
 		    --restorefile RESTOREFILE
@@ -163,7 +163,7 @@ parseInput() {
                     shift && OUTPUTDIR="$1"
                     ;;
                 --mcversion)
-                    shift && MCVERSION="$1"
+                    shift && declare -g MCVERSION_INPUT="$1"
                     ;;
                 --restorefile)
                     shift && RESTOREFILE="$1"
@@ -334,14 +334,20 @@ init() {
 # Uses several methods to determine the latest JRiver MC version
 # TODO but how to determine build distro `$DEBIANBASE=buster`?
 #######################################
-getVersion() {
+setMCVersion() {
     debug "Running: ${FUNCNAME[0]}"
 
-    declare -g MCVERSION VERSION_SOURCE MVERSION MCPKG MCRPM
+    declare -g MCVERSION MCVERSION_SOURCE MVERSION MCPKG MCRPM 
+    declare cnt
 
     # User input
-    if [[ -v MCVERSION && "$MCVERSION" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
-        VERSION_SOURCE="user input"
+    if [[ -v MCVERSION_INPUT ]]; then
+        if ! [[ "$MCVERSION_INPUT" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
+            err "Incorrect --mcversion format provided"
+            printHelp && exit 1
+        fi
+        MCVERSION="$MCVERSION_INPUT"
+        MCVERSION_SOURCE="user input"
     # Containerized package manager
     elif installPackage --silent buildah &&
     cnt=$(buildah from --quiet debian:$DEBIANBASE) &>/dev/null &&
@@ -350,32 +356,31 @@ getVersion() {
     buildah run "$cnt" -- bash  -c \
         "apt update --allow-insecure-repositories &>/dev/null" &>/dev/null &&
     MCVERSION=$(buildah run "$cnt" -- apt-cache policy mediacenter?? | grep Candidate | awk '{print $2}' | sort -V | tail -n1) &>/dev/null &&
-    [[ "$MCVERSION" =~ ([0-9]+.[0-9]+.[0-9]+) ]] &&
-    VERSION_SOURCE="containerized package manager"; then
+    [[ "$MCVERSION" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
+        MCVERSION_SOURCE="containerized package manager"
         buildah rm "$cnt" &>/dev/null
     # Webscrape
     elif installPackage wget && MCVERSION=$(wget -qO- "$BOARDURL" | grep -o "[0-9][0-9]\.[0-9]\.[0-9]\+" | head -n 1) &&
     [[ "$MCVERSION" =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then
-        VERSION_SOURCE="webscrape"
+        MCVERSION_SOURCE="webscrape"
     # Hardcoded
     else
-        MCVERSION="30.0.17"
-        VERSION_SOURCE="hardcoded version"
-        err "Warning! Using hardcoded version number"
+        MCVERSION="$MCVERSION_HARDCODE"
+        MCVERSION_SOURCE="hardcoded version"
+        err "Warning! Using hardcoded version number."
     fi
     
     MVERSION="${MCVERSION%%.*}"
     MCPKG="mediacenter$MVERSION"
     MCRPM="$OUTPUTDIR/RPMS/x86_64/mediacenter$MVERSION-$MCVERSION.x86_64.rpm"
 
-    if [[ "$VERSION_SOURCE" == "user input" ]]; then
+    if [[ "$MCVERSION_SOURCE" == "user input" ]]; then
         # Append explicit package version when user provides --mcversion
         [[ "$ID" =~ ^(fedora|centos|suse)$ ]] && MCPKG+="-$MCVERSION"
         [[ "$ID" =~ ^(debian|ubuntu)$ ]] && MCPKG+="=$MCVERSION"
-    else
-        echo "To override, use --mcversion"
     fi
-    echo "Using MC version $MCVERSION determined by $VERSION_SOURCE"
+    echo "Using MC version $MCVERSION determined by $MCVERSION_SOURCE."
+    [[ "$MCVERSION_SOURCE" == "user input" ]] || echo "To override, use --mcversion."
     debug "MVERSION: $MVERSION, MCVERSION: $MCVERSION, MCPKG: $MCPKG, MCRPM: $MCRPM"
 }
 
@@ -1557,7 +1562,7 @@ main() {
         exit
     fi
 
-    getVersion
+    setMCVersion
 
     if (( UNINSTALL_SWITCH )); then
         if askOk "Do you really want to uninstall JRiver Media Center?"; then