diff --git a/Dockerfile b/Dockerfile index 836ee443ced..4e9db69f59d 100644 --- a/Dockerfile +++ b/Dockerfile @@ -20,6 +20,7 @@ RUN apt-get update \ rsync \ nano \ unzip \ + zstd \ knockd \ ttf-dejavu \ && apt-get clean diff --git a/scripts/start-utils b/scripts/start-utils index a2da3d5c75b..9b8b9d843f7 100755 --- a/scripts/start-utils +++ b/scripts/start-utils @@ -195,12 +195,16 @@ function extract() { destDir=${2?} type=$(file -b --mime-type "${src}") - if [[ $type == application/zip ]]; then - unzip -q -d "${destDir}" "${src}" - elif [[ $type == application/x-tar ]]; then - tar -C "${destDir}" -xf "${src}" - else - log "ERROR: unsupported archive type: $type" - return 1 - fi -} \ No newline at end of file + case "${type}" in + application/zip) + unzip -q -d "${destDir}" "${src}" + ;; + application/x-tar|application/gzip|application/x-bzip2|application/zstd) + tar -C "${destDir}" -xf "${src}" + ;; + *) + log "ERROR: unsupported archive type: $type" + return 1 + ;; + esac +} diff --git a/tests/setuponlytests/world_from_tgz/docker-compose.yml b/tests/setuponlytests/world_from_tar/docker-compose.yml similarity index 86% rename from tests/setuponlytests/world_from_tgz/docker-compose.yml rename to tests/setuponlytests/world_from_tar/docker-compose.yml index 530b1ed8dd4..89aba954301 100644 --- a/tests/setuponlytests/world_from_tgz/docker-compose.yml +++ b/tests/setuponlytests/world_from_tar/docker-compose.yml @@ -8,7 +8,7 @@ services: EULA: "TRUE" SETUP_ONLY: "TRUE" VERSION: ${MINECRAFT_VERSION:-LATEST} - WORLD: /worlds/world-for-testing.tgz + WORLD: /worlds/world-for-testing.tar volumes: - ./worlds:/worlds:ro - ./data:/data diff --git a/tests/setuponlytests/world_from_tgz/verify.sh b/tests/setuponlytests/world_from_tar/verify.sh similarity index 100% rename from tests/setuponlytests/world_from_tgz/verify.sh rename to tests/setuponlytests/world_from_tar/verify.sh diff --git a/tests/setuponlytests/world_from_tgz/worlds/world-for-testing.tgz b/tests/setuponlytests/world_from_tar/worlds/world-for-testing.tar similarity index 100% rename from tests/setuponlytests/world_from_tgz/worlds/world-for-testing.tgz rename to tests/setuponlytests/world_from_tar/worlds/world-for-testing.tar diff --git a/tests/setuponlytests/world_from_tarbz2/docker-compose.yml b/tests/setuponlytests/world_from_tarbz2/docker-compose.yml new file mode 100644 index 00000000000..7f5bc2aa9e1 --- /dev/null +++ b/tests/setuponlytests/world_from_tarbz2/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3" + +services: + mc: + restart: "no" + image: ${IMAGE_TO_TEST:-itzg/minecraft-server} + environment: + EULA: "TRUE" + SETUP_ONLY: "TRUE" + VERSION: ${MINECRAFT_VERSION:-LATEST} + WORLD: /worlds/world-for-testing.tar.bz2 + volumes: + - ./worlds:/worlds:ro + - ./data:/data diff --git a/tests/setuponlytests/world_from_tarbz2/verify.sh b/tests/setuponlytests/world_from_tarbz2/verify.sh new file mode 100644 index 00000000000..b2138d04c6b --- /dev/null +++ b/tests/setuponlytests/world_from_tarbz2/verify.sh @@ -0,0 +1 @@ +mc-image-helper assert fileExists world/level.dat \ No newline at end of file diff --git a/tests/setuponlytests/world_from_tarbz2/worlds/world-for-testing.tar.bz2 b/tests/setuponlytests/world_from_tarbz2/worlds/world-for-testing.tar.bz2 new file mode 100644 index 00000000000..a3fa505e9f5 Binary files /dev/null and b/tests/setuponlytests/world_from_tarbz2/worlds/world-for-testing.tar.bz2 differ diff --git a/tests/setuponlytests/world_from_targz/docker-compose.yml b/tests/setuponlytests/world_from_targz/docker-compose.yml new file mode 100644 index 00000000000..59369b9fb0e --- /dev/null +++ b/tests/setuponlytests/world_from_targz/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3" + +services: + mc: + restart: "no" + image: ${IMAGE_TO_TEST:-itzg/minecraft-server} + environment: + EULA: "TRUE" + SETUP_ONLY: "TRUE" + VERSION: ${MINECRAFT_VERSION:-LATEST} + WORLD: /worlds/world-for-testing.tar.gz + volumes: + - ./worlds:/worlds:ro + - ./data:/data diff --git a/tests/setuponlytests/world_from_targz/verify.sh b/tests/setuponlytests/world_from_targz/verify.sh new file mode 100644 index 00000000000..b2138d04c6b --- /dev/null +++ b/tests/setuponlytests/world_from_targz/verify.sh @@ -0,0 +1 @@ +mc-image-helper assert fileExists world/level.dat \ No newline at end of file diff --git a/tests/setuponlytests/world_from_targz/worlds/world-for-testing.tar.gz b/tests/setuponlytests/world_from_targz/worlds/world-for-testing.tar.gz new file mode 100644 index 00000000000..d5e9f34e330 Binary files /dev/null and b/tests/setuponlytests/world_from_targz/worlds/world-for-testing.tar.gz differ diff --git a/tests/setuponlytests/world_from_tarzst/docker-compose.yml b/tests/setuponlytests/world_from_tarzst/docker-compose.yml new file mode 100644 index 00000000000..3008f39159b --- /dev/null +++ b/tests/setuponlytests/world_from_tarzst/docker-compose.yml @@ -0,0 +1,14 @@ +version: "3" + +services: + mc: + restart: "no" + image: ${IMAGE_TO_TEST:-itzg/minecraft-server} + environment: + EULA: "TRUE" + SETUP_ONLY: "TRUE" + VERSION: ${MINECRAFT_VERSION:-LATEST} + WORLD: /worlds/world-for-testing.tar.zst + volumes: + - ./worlds:/worlds:ro + - ./data:/data diff --git a/tests/setuponlytests/world_from_tarzst/verify.sh b/tests/setuponlytests/world_from_tarzst/verify.sh new file mode 100644 index 00000000000..b2138d04c6b --- /dev/null +++ b/tests/setuponlytests/world_from_tarzst/verify.sh @@ -0,0 +1 @@ +mc-image-helper assert fileExists world/level.dat \ No newline at end of file diff --git a/tests/setuponlytests/world_from_tarzst/worlds/world-for-testing.tar.zst b/tests/setuponlytests/world_from_tarzst/worlds/world-for-testing.tar.zst new file mode 100644 index 00000000000..80a8a60dadc Binary files /dev/null and b/tests/setuponlytests/world_from_tarzst/worlds/world-for-testing.tar.zst differ