From 3b492d309b6e4e39930035d1bc6ba7d69631bfb2 Mon Sep 17 00:00:00 2001 From: bryan Date: Fri, 18 Oct 2024 21:04:42 -0400 Subject: [PATCH] Fix self-update switch --- installJRMC | 148 +++++++++++++++++++++++++++------------------------- 1 file changed, 78 insertions(+), 70 deletions(-) diff --git a/installJRMC b/installJRMC index 34c867b..1b01058 100755 --- a/installJRMC +++ b/installJRMC @@ -68,7 +68,7 @@ print_help() { --createrepo-user USER Specify the web server user if it differs from \$USER --no-update - Disable automatic self-update + Disable automatic installJRMCself-update --uninstall, -u Uninstall JRiver MC, remove services, containers, and firewall rules (does not remove library files) --yes, -y, --auto @@ -145,56 +145,84 @@ init() { # Reset DEBUG and recatch properly with getopt declare -g DEBUG=0 - if input=$(getopt -o $short_opts -l $long_opts -- "$@"); then - eval set -- "$input" - while true; do - case $1 in - --install|-i) - shift - case $1 in - local|rpm|deb) BUILD_SWITCH=1; LOCAL_INSTALL_SWITCH=1 ;; - repo|remote) REPO_INSTALL_SWITCH=1 ;; - esac - ;; - --build|-b) BUILD_SWITCH=1; shift; BUILD_TARGET="$1" ;; - --outputdir) shift && OUTPUT_DIR="$1" ;; - --mcversion) - shift - if [[ $1 =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then - USER_MC_VERSION="$1" - else - err "Bad --mcversion"; print_help; exit 1 + + # Set defaults for no arguments or parse input + if [[ $# -eq 0 ]]; then + debug "Automatically setting --install repo" + REPO_INSTALL_SWITCH=1 + # Skip getopt + else + # Set sane defaults for + if [[ $# -le 2 ]]; then + case "$1" in + --debug | -d | -y | --yes | --auto | --mcrepo | --mcversion | \ + --arch | --betapass | --restorefile | --outputdir | --no-update) + if [[ $ID != "unknown" ]]; then + debug "Automatically setting --install repo" + REPO_INSTALL_SWITCH=1 fi ;; - --arch) shift; echo "Switching arch from $ARCH to $1"; ARCH="$1" ;; - --mcrepo) shift && MC_REPO="$1" ;; - --restorefile) shift && MJR_RESTORE_FILE="$1" ;; - --betapass) shift && BETAPASS="$1" ;; - --service-type) shift && SERVICE_TYPE="$1" ;; - --service|-s|--services) shift && SERVICES+=("$1") ;; - --createrepo) - BUILD_SWITCH=1; CREATEREPO_SWITCH=1 - shift; CREATEREPO_TARGET="$1"; BUILD_TARGET="$1" + --compat) + if [[ $# -eq 1 ]]; then + BUILD_SWITCH=1 + LOCAL_INSTALL_SWITCH=1 + fi ;; - --createrepo-webroot) shift && CREATEREPO_WEBROOT="$1" ;; - --createrepo-user) shift && CREATEREPO_USER="$1" ;; - --vncpass) shift && VNCPASS="$1" ;; - --display) shift && USER_DISPLAY="$1" ;; - --compat) COMPAT_SWITCH=1; BUILD_SWITCH=1 ;; - --no-update) UPDATE_SWITCH=0 ;; - --container|-c) shift && CONTAINERS+=("$1") ;; - --yes|-y|--auto) YES_SWITCH=1 ;; - --version|-v) echo "Version: $SCRIPT_VERSION"; exit 0 ;; - --debug|-d|--verbose) DEBUG=1 ;; - --help|-h) print_help; exit 0 ;; - --uninstall|-u) UNINSTALL_SWITCH=1 ;; - --) shift; break ;; esac - shift - done - else - err "Incorrect options provided" - print_help && exit 1 + fi + + if input=$(getopt -o $short_opts -l $long_opts -- "$@"); then + eval set -- "$input" + while true; do + case $1 in + --install|-i) + shift + case $1 in + local|rpm|deb) BUILD_SWITCH=1; LOCAL_INSTALL_SWITCH=1 ;; + repo|remote) REPO_INSTALL_SWITCH=1 ;; + esac + ;; + --build|-b) BUILD_SWITCH=1; shift; BUILD_TARGET="$1" ;; + --outputdir) shift && OUTPUT_DIR="$1" ;; + --mcversion) + shift + if [[ $1 =~ ([0-9]+.[0-9]+.[0-9]+) ]]; then + USER_MC_VERSION="$1" + else + err "Bad --mcversion"; print_help; exit 1 + fi + ;; + --arch) shift; echo "Switching arch from $ARCH to $1"; ARCH="$1" ;; + --mcrepo) shift && MC_REPO="$1" ;; + --restorefile) shift && MJR_RESTORE_FILE="$1" ;; + --betapass) shift && BETAPASS="$1" ;; + --service-type) shift && SERVICE_TYPE="$1" ;; + --service|-s|--services) shift && SERVICES+=("$1") ;; + --createrepo) + BUILD_SWITCH=1; CREATEREPO_SWITCH=1 + shift; CREATEREPO_TARGET="$1"; BUILD_TARGET="$1" + ;; + --createrepo-webroot) shift && CREATEREPO_WEBROOT="$1" ;; + --createrepo-user) shift && CREATEREPO_USER="$1" ;; + --vncpass) shift && VNCPASS="$1" ;; + --display) shift && USER_DISPLAY="$1" ;; + --compat) COMPAT_SWITCH=1; BUILD_SWITCH=1 ;; + --no-update) UPDATE_SWITCH=0 ;; + --container|-c) shift && CONTAINERS+=("$1") ;; + --yes|-y|--auto) YES_SWITCH=1 ;; + --version|-v) echo "Version: $SCRIPT_VERSION"; exit 0 ;; + --debug|-d|--verbose) DEBUG=1 ;; + --help|-h) print_help; exit 0 ;; + --uninstall|-u) UNINSTALL_SWITCH=1 ;; + --) shift; break ;; + esac + shift + done + else + err "Incorrect options provided" + print_help && exit 1 + fi + fi # Get host information @@ -242,27 +270,7 @@ init() { fi esac - # Set some defaults if zero or one arguments are passed - if [[ $# -eq 0 && $ID != "unknown" ]]; then - debug "Automatically setting --install repo" - REPO_INSTALL_SWITCH=1 - elif [[ $# -eq 1 || $# -eq 2 ]]; then - case "$1" in - --debug | -d | -y | --yes | --auto | --mcrepo | --mcversion | \ - --arch | --betapass | --restorefile | --outputdir | --no-self-update) - if [[ $ID != "unknown" ]]; then - debug "Automatically setting --install repo" - REPO_INSTALL_SWITCH=1 - fi - ;; - --compat) - if [[ $# -eq 1 ]]; then - BUILD_SWITCH=1 - LOCAL_INSTALL_SWITCH=1 - fi - ;; - esac - fi + # Set default targets BUILD_TARGET="${BUILD_TARGET:-$ID}" @@ -1469,7 +1477,7 @@ update() { after_pull_hash=$(git -C "$SCRIPT_DIR" rev-parse HEAD) if [[ "$before_pull_hash" != "$after_pull_hash" ]]; then echo "installJRMC repository updated. Restarting script..." - exec "$SCRIPT_PATH" "$@" "--no-self-update" + exec "$SCRIPT_PATH" "$@" "--no-update" fi fi @@ -1493,7 +1501,7 @@ update() { echo "Updating installJRMC $SCRIPT_VERSION to $remote_version" execute mv "$tmp" "$SCRIPT_PATH" execute chmod +x "$SCRIPT_PATH" - exec "$SCRIPT_PATH" "$@" "--no-self-update" + exec "$SCRIPT_PATH" "$@" "--no-update" fi rm -f "$tmp"