From 9ea675bc8913bf275e7c01173c26f02bc5ddc7ed Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Tue, 25 Aug 2020 21:44:36 -0500 Subject: [PATCH] Improved handling of latest PaperMC version Fixes #563 --- start-deployPaper | 36 ++++++++++++++++++++++++++---------- 1 file changed, 26 insertions(+), 10 deletions(-) diff --git a/start-deployPaper b/start-deployPaper index 0422eafc..6a84a51c 100644 --- a/start-deployPaper +++ b/start-deployPaper @@ -12,16 +12,32 @@ fi downloadUrl=${PAPER_DOWNLOAD_URL:-https://papermc.io/api/v1/paper/${VANILLA_VERSION}/${PAPERBUILD}/download} log "Downloading Paper $VANILLA_VERSION (build $PAPERBUILD) from $downloadUrl ..." -if ! curl -fsSL -o "$SERVER" $zarg "$downloadUrl" 2> /dev/null; then - if versions=$(curl -fsSL https://papermc.io/api/v1/paper 2> /dev/null | jq -r '.versions | join(", ")'); then - log "ERROR: ${VANILLA_VERSION} is not (yet) published by PaperMC" - log " Set VERSION to one of the following: " - log " ${versions}" - else - log "ERROR: failed to contact PaperMC at https://papermc.io/api/v1/paper" - fi - exit 3 -fi +out=$(curl -fsSL -o "$SERVER" $zarg "$downloadUrl" 2>&1) +case $? in + 0) + ;; + 22) # = 404 HTTP status + if versions=$(curl -fsSL https://papermc.io/api/v1/paper 2> /dev/null); then + if [[ $VERSION = LATEST ]]; then + VANILLA_VERSION=$(echo $versions | jq -r '.versions[0]') + log "WARN: using ${VANILLA_VERSION} since that's the latest provided by PaperMC" + # re-execute the current script with the newly computed version + exec $0 "$@" + fi + log "ERROR: ${VANILLA_VERSION} is not (yet) published by PaperMC" + log " Set VERSION to one of the following: " + log " $(echo $versions | jq -r '.versions | join(", ")')" + else + log "ERROR: failed to retrieve versions from https://papermc.io/api/v1/paper" + fi + exit 3 + ;; + *) + log "ERROR: failed to contact PaperMC at $downloadUrl" + log " $out" + exit 3 + ;; +esac # Normalize on Spigot for downstream operations export TYPE=SPIGOT