@echo off :: Nightbbuild2008.cmd :: This script is run every night to produce a new version of MCServer, backup its PDB files and upload the packages to web. :: These sub-scripts are used: :: - WCRev.cmd together with subwcrev templating to obtain the version number as an environment var :: - UploadVersion.ftp FTP command template for uploading the version to the web (not included in the SVN, because it contains confidential passwords! Use your own :) :: When run without parameters, this script pauses at the end and waits for a keypress. :: To run in an automated scheduler, add any parameter to disable waiting for a keystroke :: :: This script expects a few tools on specific paths, you can pass the correct paths for your system as env vars "zip", "vc" and "tsvn" :: 7-zip executable (by default it should be on PATH): if %zip%a == a set zip=7z :: Visual C++ compiler executable name: if %vc%a == a set vc="vcbuild.exe" :: TortoiseProc executable (for updating to the latest version): if %tsvn%a== a set tsvn="c:\program files\tortoisesvn\bin\tortoiseproc.exe" :: Subwcrev (from TortoiseSVN, for querying revision number; by default in PATH): if %subwcrev%a == a set subwcrev=subwcrev echo Performing nightbuild of MC-Server set DONOTPAUSE=y :: Update the sources to the latest revision: del source\Bindings.cpp del source\Bindings.h start "tsvn src" /b /min /wait %tsvn% /command:update /path:. /closeonend:1 if errorlevel 1 goto haderror :: Copy all *.template files into their non-template versions, substituting SVN keywords: for /r %%X in (*.template) do ( %subwcrev% . "%%X" "%%~dpX%%~nX" if errorlevel 1 goto haderror ) :: Get the revision number into WCREV env var call Install\WCVersion.cmd echo WCREV = %WCREV% :: Test if the version is already present if exist Install\MCServer_Win_%WCREV%.7z ( echo Latest version already present, bailing out goto end ) :: Update Bindings.cpp del source\Bindings.cpp del source\Bindings.h echo Updating Lua bindings set ALLTOLUA_WAIT=N cd source call AllToLua.bat cd .. :: Compile using VC2008 Express. Do a full rebuild. echo Setting up VS environment... call "%VS90COMNTOOLS%\vsvars32.bat" echo Compiling MCServer... title MCS Nightbuild start "vc" /b /wait /low /min %vc% /r vc2008\MCServer.sln "Release|Win32" if errorlevel 1 goto haderror :: Use 7-zip to compress the resulting files into a single file: :: Note: the output filename here must be the same as in the upload_win.ftp.template script copy MCServer\MCServer.exe Install\MCServer.exe cd Install %zip% a -mx9 -y MCServer_Win_%WCREV%.7z -scsWIN @Zip2008.list if errorlevel 1 goto haderror cd .. :: Also pack PDBs into a separate archive: :: Note: the output filename here must be the same as in the upload_win.ftp.template script %zip% a -mx9 -y Install\MCServer_Win_%WCREV%_PDBs.7z -scsWIN @Install\Zip2008_PDBs.list if errorlevel 1 goto haderror :: upload to the FTP: :upload if "a%ftppass%" == "a" ( echo You need to set FTP password in the ftppass environment variable to upload the files goto end ) if "a%ftpuser%" == "a" ( echo You need to set FTP username in the ftpuser environment variable to upload the files goto end ) if "a%ftpsite%" == "a" ( echo You need to set FTP server in the ftpsite environment variable to upload the files goto end ) ncftpput -p %ftppass% -u %ftpuser% -T temp_ %ftpsite% / Install\MCServer_Win_%WCREV%.7z if errorlevel 1 goto haderror ncftpput -p %ftppass% -u %ftpuser% -T temp_ %ftpsite% /PDBs Install\MCServer_Win_%WCREV%_PDBs.7z if errorlevel 1 goto haderror echo Upload finished. goto end :haderror echo an error was encountered, check command output above pause goto finished :end if "a%1" == "a" pause :finished