mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-12-15 23:30:55 +00:00
195 lines
6.7 KiB
Batchfile
195 lines
6.7 KiB
Batchfile
@setlocal enableextensions enabledelayedexpansion
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
: Appveyor Deployer
|
|
: See appveyor.yml for default variables
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
: Evaluate whether we should be deploying
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
if not [%DPL_ENABLED%] == [1] (
|
|
echo Deployer is not enabled...
|
|
exit /b
|
|
)
|
|
|
|
: Don't do DD installs because fmodex DLL handling is not implemented.
|
|
if [%CONFIGURATION%] == [DD] (
|
|
echo Deployer does not support DD builds...
|
|
exit /b
|
|
)
|
|
|
|
if [%CONFIGURATION%] == [DD64] (
|
|
echo Deployer does not support DD builds...
|
|
exit /b
|
|
)
|
|
|
|
: Substring match from https://stackoverflow.com/questions/7005951/batch-file-find-if-substring-is-in-string-not-in-a-file
|
|
: The below line says "if deployer is NOT in string"
|
|
: Note that APPVEYOR_REPO_BRANCH for pull request builds is the BASE branch that PR is merging INTO
|
|
if x%APPVEYOR_REPO_BRANCH:deployer=%==x%APPVEYOR_REPO_BRANCH% (
|
|
if not [%APPVEYOR_REPO_TAG%] == [true] (
|
|
echo Deployer is enabled but we are not in a release tag or a 'deployer' branch...
|
|
exit /b
|
|
) else (
|
|
if not [%DPL_TAG_ENABLED%] == [1] (
|
|
echo Deployer is not enabled for release tags...
|
|
exit /b
|
|
)
|
|
)
|
|
)
|
|
|
|
: Release tags always get optional assets (music.dta)
|
|
if [%APPVEYOR_REPO_TAG%] == [true] (
|
|
set "ASSET_FILES_OPTIONAL_GET=1"
|
|
)
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
: Get asset archives
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
if exist "C:\Users\appveyor\srb2_cache\archives\" (
|
|
if [%ASSET_CLEAN%] == [1] (
|
|
echo Cleaning asset archives...
|
|
rmdir /s /q "C:\Users\appveyor\srb2_cache\archives"
|
|
)
|
|
)
|
|
|
|
if not exist "C:\Users\appveyor\srb2_cache\archives\" mkdir "C:\Users\appveyor\srb2_cache\archives"
|
|
|
|
goto EXTRACT_ARCHIVES
|
|
|
|
::::::::::::::::::::::::::::::::
|
|
: ARCHIVE_NAME_PARTS
|
|
: Call this like a function. %archivepath% is the path to extract parts from.
|
|
::::::::::::::::::::::::::::::::
|
|
|
|
for %%a in (%archivepath%) do (
|
|
set "file=%%~fa"
|
|
set "filepath=%%~dpa"
|
|
set "filename=%%~nxa"
|
|
)
|
|
|
|
set "localarchivepath=C:\Users\appveyor\srb2_cache\archives\%filename%"
|
|
|
|
goto EOF
|
|
|
|
::::::::::::::::::::::::::::::::
|
|
: EXTRACT_ARCHIVES
|
|
::::::::::::::::::::::::::::::::
|
|
|
|
set "archivepath=%ASSET_ARCHIVE_PATH%"
|
|
call :ARCHIVE_NAME_PARTS
|
|
set "ASSET_ARCHIVE_PATH_LOCAL=%localarchivepath%"
|
|
if not exist "%localarchivepath%" appveyor DownloadFile "%ASSET_ARCHIVE_PATH%" -FileName "%localarchivepath%"
|
|
|
|
set "archivepath=%ASSET_ARCHIVE_PATCH_PATH%"
|
|
call :ARCHIVE_NAME_PARTS
|
|
set "ASSET_ARCHIVE_PATCH_PATH_LOCAL=%localarchivepath%"
|
|
if not exist "%localarchivepath%" appveyor DownloadFile "%ASSET_ARCHIVE_PATCH_PATH%" -FileName "%localarchivepath%"
|
|
|
|
if not [%X86_64%] == [1] (
|
|
set "archivepath=%ASSET_ARCHIVE_X86_PATH%"
|
|
call :ARCHIVE_NAME_PARTS
|
|
set "ASSET_ARCHIVE_X86_PATH_LOCAL=!localarchivepath!"
|
|
if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_X86_PATH%" -FileName "!localarchivepath!"
|
|
)
|
|
|
|
if [%X86_64%] == [1] (
|
|
set "archivepath=%ASSET_ARCHIVE_X64_PATH%"
|
|
call :ARCHIVE_NAME_PARTS
|
|
set "ASSET_ARCHIVE_X64_PATH_LOCAL=!localarchivepath!"
|
|
if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_X64_PATH%" -FileName "!localarchivepath!"
|
|
)
|
|
|
|
if [%ASSET_FILES_OPTIONAL_GET%] == [1] (
|
|
set "archivepath=%ASSET_ARCHIVE_OPTIONAL_PATH%"
|
|
call :ARCHIVE_NAME_PARTS
|
|
set "ASSET_ARCHIVE_OPTIONAL_PATH_LOCAL=!localarchivepath!"
|
|
if not exist "!localarchivepath!" appveyor DownloadFile "%ASSET_ARCHIVE_OPTIONAL_PATH%" -FileName "!localarchivepath!"
|
|
)
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
: Build the installers
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
mkdir "assets\installer"
|
|
mkdir "assets\patch"
|
|
|
|
7z x -y "%ASSET_ARCHIVE_PATH_LOCAL%" -o"assets\installer" >null
|
|
7z x -y "%ASSET_ARCHIVE_PATCH_PATH_LOCAL%" -o"assets\patch" >null
|
|
|
|
: Copy optional files to full installer (music.dta)
|
|
if [%ASSET_FILES_OPTIONAL_GET%] == [1] (
|
|
7z x -y "%ASSET_ARCHIVE_OPTIONAL_PATH_LOCAL%" -o"assets\installer" >null
|
|
)
|
|
|
|
: Copy EXE -- BUILD_PATH is from appveyor.yml
|
|
robocopy /S /ns /nc /nfl /ndl /np /njh /njs "%BUILD_PATH%" "assets\installer" /XF "*.debug" ".gitignore"
|
|
robocopy /S /ns /nc /nfl /ndl /np /njh /njs "%BUILD_PATH%" "assets\patch" /XF "*.debug" ".gitignore"
|
|
|
|
: Are we building DD? (we were supposed to exit earlier!)
|
|
if [%CONFIGURATION%] == [DD] ( set "DPL_INSTALLER_NAME=%DPL_INSTALLER_NAME%-DD" )
|
|
if [%CONFIGURATION%] == [DD64] ( set "DPL_INSTALLER_NAME=%DPL_INSTALLER_NAME%-DD" )
|
|
|
|
: If we are not a release tag, suffix the filename
|
|
if not [%APPVEYOR_REPO_TAG%] == [true] (
|
|
set "INSTALLER_SUFFIX=-%APPVEYOR_REPO_BRANCH%-%GITSHORT%-%CONFIGURATION%"
|
|
) else (
|
|
set "INSTALLER_SUFFIX="
|
|
)
|
|
|
|
if not [%X86_64%] == [1] ( goto X86_INSTALL )
|
|
|
|
::::::::::::::::::::::::::::::::
|
|
: X64_INSTALL
|
|
::::::::::::::::::::::::::::::::
|
|
|
|
: Extract DLL binaries
|
|
7z x -y "%ASSET_ARCHIVE_X64_PATH_LOCAL%" -o"assets\installer" >null
|
|
if [%PACKAGE_PATCH_DLL_GET%] == [1] (
|
|
7z x -y "!ASSET_ARCHIVE_X64_PATH_LOCAL!" -o"assets\patch" >null
|
|
)
|
|
|
|
: Build the installer
|
|
7z a -sfx7z.sfx "%DPL_INSTALLER_NAME%-x64-Installer%INSTALLER_SUFFIX%.exe" .\assets\installer\*
|
|
|
|
: Build the patch
|
|
7z a "%DPL_INSTALLER_NAME%-x64-Patch%INSTALLER_SUFFIX%.zip" .\assets\patch\*
|
|
|
|
: Upload artifacts
|
|
appveyor PushArtifact "%DPL_INSTALLER_NAME%-x64-Installer%INSTALLER_SUFFIX%.exe"
|
|
appveyor PushArtifact "%DPL_INSTALLER_NAME%-x64-Patch%INSTALLER_SUFFIX%.zip"
|
|
|
|
: We only do x86 OR x64, one at a time, so exit now.
|
|
goto EOF
|
|
|
|
::::::::::::::::::::::::::::::::
|
|
: X86_INSTALL
|
|
::::::::::::::::::::::::::::::::
|
|
|
|
: Extract DLL binaries
|
|
7z x -y "%ASSET_ARCHIVE_X86_PATH_LOCAL%" -o"assets\installer" >null
|
|
if [%PACKAGE_PATCH_DLL_GET%] == [1] (
|
|
7z x -y "!ASSET_ARCHIVE_X86_PATH_LOCAL!" -o"assets\patch" >null
|
|
)
|
|
|
|
: Build the installer
|
|
7z a -sfx7z.sfx "%DPL_INSTALLER_NAME%-Installer%INSTALLER_SUFFIX%.exe" .\assets\installer\*
|
|
|
|
: Build the patch
|
|
7z a "%DPL_INSTALLER_NAME%-Patch%INSTALLER_SUFFIX%.zip" .\assets\patch\*
|
|
|
|
: Upload artifacts
|
|
appveyor PushArtifact "%DPL_INSTALLER_NAME%-Installer%INSTALLER_SUFFIX%.exe"
|
|
appveyor PushArtifact "%DPL_INSTALLER_NAME%-Patch%INSTALLER_SUFFIX%.zip"
|
|
|
|
: We only do x86 OR x64, one at a time, so exit now
|
|
goto EOF
|
|
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
: EOF
|
|
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
|
|
|
endlocal
|