]> gitweb.factorcode.org Git - factor.git/blobdiff - build.cmd
scryfall: parse mtga deck format
[factor.git] / build.cmd
index 6d964ec6604f12dc2dbff9265bd739f7a813c94a..1fd1ab54f7eb33decfafb811d0012228a9db1a40 100644 (file)
--- a/build.cmd
+++ b/build.cmd
@@ -1,6 +1,15 @@
 @echo off
 setlocal
 
+goto start
+
+:download
+rem branch url filename
+echo Fetching %1 boot image from %2
+cscript /nologo misc\http-get.vbs %2 %3
+exit /b
+
+:start
 : Check which branch we are on, or just assume master if we are not in a git repository
 for /f %%z in ('git rev-parse --abbrev-ref HEAD') do set GIT_BRANCH=%%z
 if not defined GIT_BRANCH (
@@ -10,13 +19,45 @@ if not defined GIT_BRANCH (
 if "%1"=="/?" (
     goto usage
 ) else if "%1"=="" (
-    set _bootimage_version=%GIT_BRANCH%
+    set _git_pull=1
+    set _compile_vm=1
+    set _bootimage_type=download
+    set _bootstrap_factor=1
 ) else if "%1"=="latest" (
-    set _bootimage_version=%GIT_BRANCH%
+    set _git_pull=1
+    set _compile_vm=1
+    set _bootimage_type=download
+    set _bootstrap_factor=1
 ) else if "%1"=="update" (
-    set _bootimage_version=%GIT_BRANCH%
-) else if "%1"=="clean" (
-    set _bootimage_version=clean
+    set _git_pull=1
+    set _compile_vm=1
+    set _bootimage_type=download
+    set _bootstrap_factor=1
+) else if "%1"=="compile" (
+    set _git_pull=0
+    set _compile_vm=1
+    set _bootimage_type=current
+    set _bootstrap_factor=0
+) else if "%1"=="self-bootstrap" (
+    set _git_pull=1
+    set _compile_vm=0
+    set _bootimage_type=make
+    set _bootstrap_factor=1
+) else if "%1"=="bootstrap" (
+    set _git_pull=0
+    set _compile_vm=0
+    set _bootimage_type=current
+    set _bootstrap_factor=1
+) else if "%1"=="net-bootstrap" (
+    set _git_pull=0
+    set _compile_vm=1
+    set _bootimage_type=download
+    set _bootstrap_factor=1
+) else if "%1"=="update-boot-image" (
+    set _git_pull=0
+    set _compile_vm=0
+    set _bootimage_type=download
+    set _bootstrap_factor=0
 ) else goto usage
 
 if not exist Nmakefile goto wrongdir
@@ -38,30 +79,44 @@ if not errorlevel 1 (
 echo Deleting staging images from temp/...
 del temp\staging.*.image
 
-echo Updating working copy from %GIT_BRANCH%...
-call git pull git://factorcode.org/git/factor.git %GIT_BRANCH%
-if errorlevel 1 goto fail
+if "%_git_pull%"=="1" (
+    echo Updating working copy from %GIT_BRANCH%...
+    call git pull https://github.com/factor/factor %GIT_BRANCH%
+    if errorlevel 1 goto fail
+)
 
-echo Building vm...
-nmake /nologo /f Nmakefile clean
-if errorlevel 1 goto fail
+if "%_compile_vm%"=="1" (
+    echo Building vm...
+    nmake /nologo /f Nmakefile clean
+    if errorlevel 1 goto fail
 
-nmake /nologo /f Nmakefile %_target%
-if errorlevel 1 goto fail
+    nmake /nologo /f Nmakefile %_target%
+    if errorlevel 1 goto fail
+)
 
-echo Fetching %_bootimage_version% boot image...
-set boot_image_url=http://downloads.factorcode.org/images/%GIT_BRANCH%/%_bootimage% %_bootimage%
-echo URL: %boot_image_url%
-cscript /nologo misc\http-get.vbs %boot_image_url% %_bootimage%
-if errorlevel 1 goto fail
+set _bootimage_url=https://downloads.factorcode.org/images/%GIT_BRANCH%/%_bootimage%
+if "%_bootimage_type%"=="download" (
+    call :download %GIT_BRANCH% %_bootimage_url% %_bootimage%
+    if errorlevel 1 (
+        echo boot image for branch %GIT_BRANCH% is not on server, trying master instead
+        call :download master https://downloads.factorcode.org/images/master/%_bootimage% %_bootimage%
+    )
+    if errorlevel 1 goto fail
+) else if "%_bootimage_type%"=="make" (
+    echo Making boot image...
+    .\factor.com -run=bootstrap.image %_bootimage%
+    if errorlevel 1 goto fail
+)
 
-echo Bootstrapping...
-.\factor.com -i=%_bootimage%
-if errorlevel 1 goto fail
+if "%_bootstrap_factor%"=="1" (
+    echo Bootstrapping...
+    .\factor.com -i=%_bootimage%
+    if errorlevel 1 goto fail
 
-echo Copying fresh factor.image to factor.image.fresh.
-copy factor.image factor.image.fresh
-if errorlevel 1 goto fail
+    echo Copying fresh factor.image to factor.image.fresh.
+    copy factor.image factor.image.fresh
+    if errorlevel 1 goto fail
+)
 
 echo Build complete.
 goto :EOF
@@ -80,8 +135,16 @@ echo Make sure you're running within the Visual Studio or Windows SDK environmen
 goto :EOF
 
 :usage
-echo Usage: build.cmd
+echo Usage: build.cmd [command]
 echo     Updates the working copy, cleans and builds the vm using nmake,
 echo     fetches a boot image, and bootstraps factor.
+echo:
 echo     The branch that bootstraps is the one that is checked out locally.
+echo:
+echo     compile - recompile vm
+echo     update - git pull, recompile vm, download a boot image, bootstrap
+echo     self-bootstrap - git pull, make a boot image, bootstrap
+echo     bootstrap - existing boot image, bootstrap
+echo     net-bootstrap - recompile vm, download a boot image, bootstrap
+echo     update-boot-image - get the boot image for the current branch
 goto :EOF