diff --git a/installJRMC b/installJRMC index 563a2da..181746d 100755 --- a/installJRMC +++ b/installJRMC @@ -236,13 +236,10 @@ init() { declare -g USER declare -g SCRIPT_PATH; SCRIPT_PATH=$(readlink -f "${BASH_SOURCE[0]}") declare -g SCRIPT_DIR; SCRIPT_DIR=$(readlink -f "$(dirname "${BASH_SOURCE[0]}")") - + declare -gi SCRIPT_IS_PIPED=0 + # Detect if script is being piped (SCRIPT_PATH won't be a regular file) - if [[ ! -f $SCRIPT_PATH ]]; then - declare -g SCRIPT_IS_PIPED=1 - else - declare -g SCRIPT_IS_PIPED=0 - fi + [[ ! -f $SCRIPT_PATH ]] && SCRIPT_IS_PIPED=1 declare -g OUTPUT_DIR="$SCRIPT_DIR/output" declare -g CREATEREPO_WEBROOT="/var/www/jriver" @@ -265,7 +262,7 @@ init() { fi # Run the self-updater if enabled - ((SELF_UPDATE_SWITCH)) && update "$@" + ((SELF_UPDATE_SWITCH)) && ((! SCRIPT_IS_PIPED)) && update "$@" # Check that the .jriver directory is owned by the user ((YES_SWITCH)) || fix_permissions "$HOME/.jriver" "$USER" @@ -1054,7 +1051,7 @@ install_mc_deb() { execute sudo rm -f "$temp_deb" if ask_ok "Remove source DEB and retry?"; then execute sudo rm -f "$MC_DEB" - exec bash "$SCRIPT_PATH" "$@" "--no-update" + rerun "$@" fi return 1 fi @@ -1716,7 +1713,7 @@ update() { # If the commit hash has changed, an update occurred if [[ "$before_pull_hash" != $(git -C "$SCRIPT_DIR" rev-parse HEAD) ]]; then echo "Detected installJRMC update, restarting" - exec bash "$SCRIPT_PATH" "$@" "--no-update" + rerun "$@" fi else debug "Not in the installJRMC repository, checking for installJRMC update via webscrape." @@ -1747,7 +1744,7 @@ update() { execute rm -f "$tmp" echo "Detected installJRMC update, restarting" - exec bash "$SCRIPT_PATH" "$@" "--no-update" + rerun "$@" else debug "Current installJRMC $SCRIPT_VERSION is the latest version" execute rm -f "$tmp" @@ -1846,13 +1843,7 @@ main() { [[ -n $LEGACY_REPO_FILE ]] && sudo rm -f "$LEGACY_REPO_FILE" if [[ $MC_REPO != "$MC_REPO_HARDCODE" ]]; then echo "Rerunning installJRMC with --mcrepo=$MC_REPO_HARDCODE" - if ((SCRIPT_IS_PIPED)); then - # Re-download and execute if script was piped - curl -fsSL "$SCRIPT_URL" | bash -s -- "$@" "--no-update" "--mcrepo=$MC_REPO_HARDCODE" - exit $? - else - exec bash "$SCRIPT_PATH" "$@" "--no-update" "--mcrepo=$MC_REPO_HARDCODE" - fi + rerun "$@" "--mcrepo=$MC_REPO_HARDCODE" fi return 1 fi @@ -2030,6 +2021,16 @@ create_mc_apt_container() { buildah run "$CNT" -- sh -c "$cmd" || { err "$cmd failed"; return 1; } done } +rerun() { + debug "${FUNCNAME[0]}()" "$@" + if ((SCRIPT_IS_PIPED)); then + # Re-download and execute if script was piped + curl -fsSL "$SCRIPT_URL" | bash -s -- "$@" "--no-update" + exit $? + else + exec bash "$SCRIPT_PATH" "$@" "--no-update" + fi +} # Roughly turn debugging on for pre-init # Reset and reparse in parse_input() with getopt