diff --git a/installJRMC b/installJRMC index 5f1926c..759ae9a 100755 --- a/installJRMC +++ b/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