From 5ae5733741a7d5dc25656a8c0070476b5fdba5c5 Mon Sep 17 00:00:00 2001 From: Geoff Bourne Date: Mon, 14 Mar 2022 21:07:06 -0500 Subject: [PATCH] Determine SPIGET file type from API (#1427) --- scripts/start-spiget | 15 +++++++++------ scripts/start-utils | 2 +- tests/setuponlytests/spiget/docker-compose.yml | 2 +- tests/setuponlytests/spiget/verify.sh | 3 ++- 4 files changed, 13 insertions(+), 9 deletions(-) diff --git a/scripts/start-spiget b/scripts/start-spiget index 186074f6..4024ed92 100755 --- a/scripts/start-spiget +++ b/scripts/start-spiget @@ -89,24 +89,27 @@ downloadResourceFromSpiget() { resourceUrl="https://api.spiget.org/v2/resources/${resource}" if ! outfile=$(get --output-filename -o /tmp "${acceptArgs[@]}" "${resourceUrl}/download"); then - log "ERROR: failed to download resource '${resource}' from ${resourceUrl}/download" + log "ERROR: failed to download resource '${resource}' from ${resourceUrl}/download" if externalUrl=$(get --json-path '$.file.externalUrl' "${resourceUrl}"); then log " Visit $externalUrl to pre-download the resource" log " instead of using SPIGET_RESOURCES" fi - exit 2 + exit 1 fi - contentType=$(file -b --mime-type "$outfile") - if [[ $contentType == application/zip ]]; then + if ! fileType=$(get --json-path '.file.type' "${resourceUrl}"); then + log "ERROR: failed to retrieve file type of resource $resource" + exit 1 + fi + if [[ $fileType == .zip ]]; then log "Extracting contents of resource ${resource} into plugins" extract "$outfile" /data/plugins rm "$outfile" - elif [[ $contentType == application/java-archive ]]; then + elif [[ $fileType == .jar ]]; then log "Moving resource ${resource} into plugins" mv "$outfile" /data/plugins else - log "ERROR: file for resource ${resource} is not a valid content type: ${contentType}" + log "ERROR: file for resource ${resource} has an unexpected file type: ${fileType}" exit 2 fi } diff --git a/scripts/start-utils b/scripts/start-utils index 8e2ee94e..b6c2f1da 100755 --- a/scripts/start-utils +++ b/scripts/start-utils @@ -234,7 +234,7 @@ function extract() { type=$(file -b --mime-type "${src}") case "${type}" in application/zip) - unzip -q -d "${destDir}" "${src}" + unzip -o -q -d "${destDir}" "${src}" ;; application/x-tar|application/gzip|application/x-gzip|application/x-bzip2|application/zstd|application/x-zstd) tar -C "${destDir}" -xf "${src}" diff --git a/tests/setuponlytests/spiget/docker-compose.yml b/tests/setuponlytests/spiget/docker-compose.yml index fd58b737..6ce8038c 100644 --- a/tests/setuponlytests/spiget/docker-compose.yml +++ b/tests/setuponlytests/spiget/docker-compose.yml @@ -8,6 +8,6 @@ services: EULA: "TRUE" SETUP_ONLY: "TRUE" TYPE: PAPER - SPIGET_RESOURCES: "34315,3836" + SPIGET_RESOURCES: "34315,3836,6245" volumes: - ./data:/data diff --git a/tests/setuponlytests/spiget/verify.sh b/tests/setuponlytests/spiget/verify.sh index 86e3011f..02152bfe 100644 --- a/tests/setuponlytests/spiget/verify.sh +++ b/tests/setuponlytests/spiget/verify.sh @@ -1,2 +1,3 @@ mc-image-helper assert fileExists plugins/3836.jar -mc-image-helper assert fileExists plugins/34315.jar \ No newline at end of file +mc-image-helper assert fileExists plugins/34315.jar +mc-image-helper assert fileExists plugins/6245.jar \ No newline at end of file