178 lines
4.9 KiB
Batchfile
178 lines
4.9 KiB
Batchfile
@echo off
|
|
setlocal EnableExtensions EnableDelayedExpansion
|
|
|
|
REM ============================================================
|
|
REM LesRaisinsArmor - Fabric Release Helper (Windows)
|
|
REM Version is read exclusively from gradle.properties.
|
|
REM ============================================================
|
|
|
|
cd /d "%~dp0"
|
|
|
|
set "GRADLE_PROPERTIES=%CD%\gradle.properties"
|
|
set "MOD_VERSION="
|
|
set "MINECRAFT_VERSION="
|
|
set "ARCHIVES_BASE_NAME="
|
|
|
|
if not exist "%GRADLE_PROPERTIES%" (
|
|
echo [ERROR] gradle.properties tidak ditemukan.
|
|
goto :failed
|
|
)
|
|
|
|
for /f "usebackq tokens=1,* delims==" %%A in ("%GRADLE_PROPERTIES%") do (
|
|
if "%%A"=="mod_version" set "MOD_VERSION=%%B"
|
|
if "%%A"=="minecraft_version" set "MINECRAFT_VERSION=%%B"
|
|
if "%%A"=="archives_base_name" set "ARCHIVES_BASE_NAME=%%B"
|
|
)
|
|
|
|
if not defined MOD_VERSION (
|
|
echo [ERROR] mod_version tidak ditemukan atau kosong di gradle.properties.
|
|
goto :failed
|
|
)
|
|
if not defined MINECRAFT_VERSION set "MINECRAFT_VERSION=26.2"
|
|
if not defined ARCHIVES_BASE_NAME set "ARCHIVES_BASE_NAME=lrarmor"
|
|
|
|
set "JAR_PATH=%CD%\build\libs\%ARCHIVES_BASE_NAME%-%MOD_VERSION%.jar"
|
|
set "SOURCES_JAR_PATH=%CD%\build\libs\%ARCHIVES_BASE_NAME%-%MOD_VERSION%-sources.jar"
|
|
set "RELEASE_ROOT=%CD%\release"
|
|
set "RELEASE_DIR=%RELEASE_ROOT%\%MOD_VERSION%"
|
|
set "RELEASE_JAR=%RELEASE_DIR%\%ARCHIVES_BASE_NAME%-%MOD_VERSION%.jar"
|
|
|
|
echo ============================================
|
|
echo LesRaisinsArmor - Release Helper
|
|
echo Minecraft : %MINECRAFT_VERSION%
|
|
echo Version : %MOD_VERSION%
|
|
echo Tag : v%MOD_VERSION%
|
|
echo ============================================
|
|
echo.
|
|
|
|
if not exist "%JAR_PATH%" (
|
|
echo [INFO] JAR v%MOD_VERSION% belum ditemukan.
|
|
choice /C YN /N /M "Compile sekarang? [Y/N]: "
|
|
if errorlevel 2 goto :cancelled
|
|
call "%CD%\compile.bat" --build-only
|
|
if errorlevel 1 (
|
|
echo [ERROR] Compile gagal. Release dibatalkan.
|
|
goto :failed
|
|
)
|
|
)
|
|
|
|
if not exist "%JAR_PATH%" (
|
|
echo [ERROR] JAR release tetap tidak ditemukan:
|
|
echo %JAR_PATH%
|
|
goto :failed
|
|
)
|
|
|
|
if exist "%RELEASE_DIR%" (
|
|
echo [INFO] Folder release v%MOD_VERSION% sudah ada:
|
|
echo %RELEASE_DIR%
|
|
choice /C YN /N /M "Timpa artifact release versi ini? [Y/N]: "
|
|
if errorlevel 2 goto :cancelled
|
|
rmdir /S /Q "%RELEASE_DIR%"
|
|
)
|
|
|
|
mkdir "%RELEASE_DIR%" >nul 2>&1
|
|
copy /Y "%JAR_PATH%" "%RELEASE_JAR%" >nul
|
|
if errorlevel 1 goto :failed
|
|
|
|
if exist "%SOURCES_JAR_PATH%" copy /Y "%SOURCES_JAR_PATH%" "%RELEASE_DIR%\" >nul
|
|
if exist "%CD%\README.md" copy /Y "%CD%\README.md" "%RELEASE_DIR%\README.md" >nul
|
|
if exist "%CD%\PORT-CHANGELOG.md" copy /Y "%CD%\PORT-CHANGELOG.md" "%RELEASE_DIR%\PORT-CHANGELOG.md" >nul
|
|
if exist "%CD%\LICENSE" copy /Y "%CD%\LICENSE" "%RELEASE_DIR%\LICENSE" >nul
|
|
|
|
where certutil.exe >nul 2>&1
|
|
if not errorlevel 1 (
|
|
certutil -hashfile "%RELEASE_JAR%" SHA256 | findstr /V /I "hash CertUtil" > "%RELEASE_DIR%\SHA256SUMS.txt"
|
|
)
|
|
|
|
echo.
|
|
echo [SUCCESS] Artifact release siap:
|
|
echo %RELEASE_DIR%
|
|
echo.
|
|
dir /B "%RELEASE_DIR%"
|
|
|
|
echo.
|
|
choice /C YN /N /M "Buat dan push Git tag v%MOD_VERSION%? [Y/N]: "
|
|
if errorlevel 2 goto :success
|
|
|
|
where git.exe >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo [ERROR] Git tidak ditemukan di PATH. Artifact tetap aman.
|
|
goto :git_failed
|
|
)
|
|
|
|
git rev-parse --is-inside-work-tree >nul 2>&1
|
|
if errorlevel 1 (
|
|
echo [ERROR] Folder ini bukan Git repository. Artifact tetap aman.
|
|
goto :git_failed
|
|
)
|
|
|
|
set "DIRTY="
|
|
for /f "delims=" %%G in ('git status --porcelain') do set "DIRTY=1"
|
|
if defined DIRTY (
|
|
echo [ERROR] Working tree masih memiliki perubahan yang belum di-commit.
|
|
echo [INFO] Commit/push dulu dengan compile.bat agar tag menunjuk source release yang benar.
|
|
git status --short
|
|
goto :git_failed
|
|
)
|
|
|
|
git rev-parse "v%MOD_VERSION%" >nul 2>&1
|
|
if not errorlevel 1 (
|
|
echo [INFO] Tag v%MOD_VERSION% sudah ada secara lokal; tidak membuat ulang.
|
|
) else (
|
|
git tag -a "v%MOD_VERSION%" -m "LesRaisinsArmor v%MOD_VERSION%"
|
|
if errorlevel 1 goto :git_failed
|
|
)
|
|
|
|
set /a PUSH_ROUND=1
|
|
:push_round
|
|
set /a PUSH_ATTEMPT=1
|
|
:push_attempt
|
|
echo [INFO] Push tag attempt !PUSH_ATTEMPT!/3 ^(round !PUSH_ROUND!^)...
|
|
git push origin "v%MOD_VERSION%"
|
|
if not errorlevel 1 goto :success
|
|
if !PUSH_ATTEMPT! LSS 3 (
|
|
set /a PUSH_ATTEMPT+=1
|
|
timeout /t 2 /nobreak >nul
|
|
goto :push_attempt
|
|
)
|
|
|
|
echo [WARN] Push tag gagal setelah 3 percobaan.
|
|
choice /C YN /N /M "Coba push tag 3x lagi? [Y/N]: "
|
|
if errorlevel 2 goto :git_failed
|
|
set /a PUSH_ROUND+=1
|
|
goto :push_round
|
|
|
|
:git_failed
|
|
echo.
|
|
echo [WARN] Tahap Git/tag belum selesai, tetapi artifact release sudah dibuat.
|
|
goto :end_error
|
|
|
|
:success
|
|
echo.
|
|
echo ============================================
|
|
echo RELEASE v%MOD_VERSION% SIAP
|
|
echo ============================================
|
|
echo Artifact: %RELEASE_DIR%
|
|
echo ============================================
|
|
goto :end_ok
|
|
|
|
:cancelled
|
|
echo.
|
|
echo [INFO] Release dibatalkan oleh pengguna.
|
|
goto :end_ok
|
|
|
|
:failed
|
|
echo.
|
|
echo [ERROR] Release gagal.
|
|
goto :end_error
|
|
|
|
:end_ok
|
|
echo.
|
|
pause
|
|
exit /b 0
|
|
|
|
:end_error
|
|
echo.
|
|
pause
|
|
exit /b 1
|