#!/usr/bin/env bash # Приводит результат Ant-сборки Mobius к единой структуре: # /out/login/ — всё для login-сервера (LoginServer.jar + config + libs) # /out/game/ — всё для game-сервера (GameServer.jar + config + libs) # # Ant-таргеты "adding-core"/"adding-datapack" в build.xml собирают ВСЁ # в один общий zip (build/.zip), а таргет cleanup удаляет # промежуточный dist/. Поэтому источник истины — этот zip, а не # исходная папка dist/ в репозитории (там jar-ов нет). set -euo pipefail BUILD_OUT="/build/build" mkdir -p /out/login /out/game ZIP_PATH=$(find "$BUILD_OUT" -maxdepth 1 -iname "*.zip" | head -n1) if [ -z "$ZIP_PATH" ]; then echo "!! Не найден собранный .zip в $BUILD_OUT" echo "!! Содержимое $BUILD_OUT:" find "$BUILD_OUT" -maxdepth 2 2>/dev/null || echo "(папка не существует)" exit 1 fi echo ">> найден собранный архив: $ZIP_PATH" mkdir -p /tmp/extracted cd /tmp/extracted unzip -q "$ZIP_PATH" echo ">> содержимое распакованного архива:" find /tmp/extracted -maxdepth 3 EXTRACTED_ROOT="/tmp/extracted" if [ -d "$EXTRACTED_ROOT/dist" ]; then EXTRACTED_ROOT="$EXTRACTED_ROOT/dist" fi echo ">> используем корень: $EXTRACTED_ROOT" if [ ! -d "$EXTRACTED_ROOT/login" ] || [ ! -d "$EXTRACTED_ROOT/game" ]; then echo "!! Не нашёл login/ или game/ внутри архива. Полное содержимое:" find /tmp/extracted exit 1 fi rsync -a "$EXTRACTED_ROOT/login"/ /out/login/ rsync -a "$EXTRACTED_ROOT/game"/ /out/game/ if [ -d "$EXTRACTED_ROOT/libs" ]; then echo ">> копирую общие libs/ в оба out" mkdir -p /out/login/libs /out/game/libs rsync -a "$EXTRACTED_ROOT/libs"/ /out/login/libs/ rsync -a "$EXTRACTED_ROOT/libs"/ /out/game/libs/ fi find /out -iname "*-sources.jar" -delete # SQL-схемы для установки БД (login/accounts + game/characters и т.д.) if [ -d "$EXTRACTED_ROOT/db_installer/sql" ]; then echo ">> копирую SQL-схемы из db_installer/sql" mkdir -p /out/sql rsync -a "$EXTRACTED_ROOT/db_installer/sql"/ /out/sql/ fi echo ">> /out/login contents:" find /out/login -maxdepth 2 echo ">> /out/game contents:" find /out/game -maxdepth 2 echo ">> jar files in /out:" find /out -iname "*.jar"