diff --git a/Dockerfile b/Dockerfile index 28f01780..3c2034d3 100644 --- a/Dockerfile +++ b/Dockerfile @@ -46,7 +46,7 @@ RUN easy-add --var os=${TARGETOS} --var arch=${TARGETARCH}${TARGETVARIANT} \ --var version=0.1.1 --var app=maven-metadata-release --file {{.app}} \ --from https://github.com/itzg/{{.app}}/releases/download/{{.version}}/{{.app}}_{{.version}}_{{.os}}_{{.arch}}.tar.gz -ARG MC_HELPER_VERSION=1.29.2 +ARG MC_HELPER_VERSION=1.30.1 ARG MC_HELPER_BASE_URL=https://github.com/itzg/mc-image-helper/releases/download/${MC_HELPER_VERSION} # used for cache busting local copy of mc-image-helper ARG MC_HELPER_REV=1 diff --git a/scripts/start-deployFolia b/scripts/start-deployFolia index 9675958b..0ee5bcc8 100644 --- a/scripts/start-deployFolia +++ b/scripts/start-deployFolia @@ -8,4 +8,4 @@ if [[ $FOLIABUILD ]]; then export PAPERBUILD="$FOLIABUILD" fi -PAPER_PROJECT="folia" PAPER_NAME="FoliaMC" exec ${SCRIPTS:-/}start-deployPaper "$@" +PAPER_PROJECT="folia" PAPER_NAME="FoliaMC" exec "${SCRIPTS:-/}start-deployPaper" "$@" diff --git a/scripts/start-deployPaper b/scripts/start-deployPaper index b4fa1fe3..e359bee3 100755 --- a/scripts/start-deployPaper +++ b/scripts/start-deployPaper @@ -5,79 +5,48 @@ set -o pipefail handleDebugMode +: "${PAPER_PROJECT:=paper}" +: "${PAPERBUILD:=}" +: "${PAPER_DOWNLOAD_URL:=}" : "${PAPER_CUSTOM_JAR:=}" -ourScript="$0" -ourArgs=("$@") - -# Check if we're running Folia. -if [[ -z $PAPER_PROJECT ]]; then - PAPER_PROJECT="paper" - PAPER_NAME="PaperMC" -fi - -function handleMissingVersion() { - expectedVersion=${VANILLA_VERSION} - versions=$(curl -fsSL "https://papermc.io/api/v2/projects/${PAPER_PROJECT}" -H "accept: application/json") - if [[ $VERSION = LATEST ]]; then - tries=0 - while ((tries++ < 5)); do - VANILLA_VERSION=$(echo "$versions" | jq -r ".versions[$((- tries))]") - if [[ $(curl -fsSL "https://papermc.io/api/v2/projects/${PAPER_PROJECT}/versions/${VANILLA_VERSION}" -H "accept: application/json" \ - | jq '.builds[-1]') != null ]]; then - log "WARN: using ${VANILLA_VERSION} since that's the latest provided by ${PAPER_NAME}" - # re-execute the current script with the newly computed version - exec "$ourScript" "${ourArgs[@]}" - fi - done - fi - log "ERROR: ${expectedVersion} is not published by ${PAPER_NAME}" - log " Set VERSION to one of the following: " - log " $(echo "$versions" | jq -r '.versions | join(", ")')" - exit 1 -} - +resultsFile=/data/.paper.env if [[ $PAPER_CUSTOM_JAR ]]; then export SERVER="$PAPER_CUSTOM_JAR" elif [[ $PAPER_DOWNLOAD_URL ]]; then - SERVER=$(getFilenameFromUrl "${PAPER_DOWNLOAD_URL}") - export SERVER - - log "Downloading custom ${PAPER_NAME} jar from $PAPER_DOWNLOAD_URL" - if ! mc-image-helper mcopy \ - --scope=papermc \ - --to=/data \ - "${PAPER_DOWNLOAD_URL}"; then - echo "ERROR: failed to download ${PAPER_NAME} from $PAPER_DOWNLOAD_URL" - exit 1 + if ! mc-image-helper install-paper \ + --output-directory=/data \ + --results-file="$resultsFile" \ + --url="$PAPER_DOWNLOAD_URL}"; then + log "ERROR: failed to download from custom PaperMC URL" + exit 1 fi + # grab SERVER and export it + set -a + # shellcheck disable=SC1090 + source "${resultsFile}" + set +a else - # Paper API v2 docs : https://papermc.io/api/docs/swagger-ui/index.html?configUrl=/api/openapi/swagger-config - - if ! build=${PAPERBUILD:=$(get --json-path=".builds[-1]" "https://papermc.io/api/v2/projects/${PAPER_PROJECT}/versions/${VANILLA_VERSION}")}; then - log "ERROR: failed to lookup build number for ${PAPER_NAME} version=${VANILLA_VERSION}" - exit 1 + args=( + --output-directory=/data + --results-file="$resultsFile" + --project="$PAPER_PROJECT" + --version="$VERSION" + ) + if [[ $PAPERBUILD ]]; then + args+=(--build="$PAPERBUILD") fi - - if [[ $build = null ]]; then - handleMissingVersion + if ! mc-image-helper install-paper "${args[@]}"; then + log "ERROR: failed to download $PAPER_PROJECT" + exit 1 fi + # grab SERVER and export it + set -a + # shellcheck disable=SC1090 + source "${resultsFile}" + set +a - if ! SERVER=$(get --json-path=.downloads.application.name "https://papermc.io/api/v2/projects/${PAPER_PROJECT}/versions/${VANILLA_VERSION}/builds/${build}"); then - echo "ERROR: failed to lookup ${PAPER_NAME} download file from version=${VANILLA_VERSION} build=${build}" - exit 1 - fi - export SERVER - - log "Downloading ${PAPER_NAME} $VANILLA_VERSION (build $build) ..." - if ! mc-image-helper mcopy \ - --scope=papermc \ - --to=/data \ - "https://papermc.io/api/v2/projects/${PAPER_PROJECT}/versions/${VANILLA_VERSION}/builds/${build}/downloads/${SERVER}"; then - echo "ERROR: failed to download ${PAPER_NAME} from version=${VANILLA_VERSION} build=${build} download=${SERVER}" - exit 1 - fi fi # Normalize on Spigot for downstream operations