@echo off

:: The conda and wheels jobs are seperated on Windows, so we don't need to clone again.
IF "%BUILD_VISION%" == "" (
    if exist "%NIGHTLIES_PYTORCH_ROOT%" (
        xcopy /E /Y /Q "%NIGHTLIES_PYTORCH_ROOT%" pytorch\
        cd pytorch
        goto submodule
    )
)

git clone https://github.com/%PYTORCH_REPO%/%MODULE_NAME%

cd %MODULE_NAME%

IF NOT "%BUILD_VISION%" == "" goto latest_end

IF "%PYTORCH_BRANCH%" == "latest" ( goto latest_start ) else ( goto latest_end )

:latest_start

if "%NIGHTLIES_DATE%" == "" ( goto date_start ) else ( goto date_end )

:date_start

set "DATE_CMD=Get-Date ([System.TimeZoneInfo]::ConvertTimeFromUtc((Get-Date).ToUniversalTime(), [System.TimeZoneInfo]::FindSystemTimeZoneById('Pacific Standard Time'))) -f 'yyyy_MM_dd'"
set "DATE_COMPACT_CMD=Get-Date ([System.TimeZoneInfo]::ConvertTimeFromUtc((Get-Date).ToUniversalTime(), [System.TimeZoneInfo]::FindSystemTimeZoneById('Pacific Standard Time'))) -f 'yyyyMMdd'"

FOR /F "delims=" %%i IN ('powershell -c "%DATE_CMD%"') DO set NIGHTLIES_DATE=%%i
FOR /F "delims=" %%i IN ('powershell -c "%DATE_COMPACT_CMD%"') DO set NIGHTLIES_DATE_COMPACT=%%i

:date_end

if "%NIGHTLIES_DATE_COMPACT%" == "" set NIGHTLIES_DATE_COMPACT=%NIGHTLIES_DATE:~0,4%%NIGHTLIES_DATE:~5,2%%NIGHTLIES_DATE:~8,2%

:: Switch to the latest commit by 11:59 yesterday
echo PYTORCH_BRANCH is set to latest so I will find the last commit
echo before 0:00 midnight on %NIGHTLIES_DATE%
set git_date=%NIGHTLIES_DATE:_=-%
FOR /F "delims=" %%i IN ('git log --before %git_date% -n 1 "--pretty=%%H"') DO set last_commit=%%i
echo Setting PYTORCH_BRANCH to %last_commit% since that was the last
echo commit before %NIGHTLIES_DATE%
set PYTORCH_BRANCH=%last_commit%

:latest_end

IF "%BUILD_VISION%" == "" (
    IF "%PYTORCH_BRANCH%" == "" (
        set PYTORCH_BRANCH=v%PYTORCH_BUILD_VERSION%
    )
    git checkout %PYTORCH_BRANCH%
    IF ERRORLEVEL 1 git checkout tags/%PYTORCH_BRANCH%
) ELSE (
    git checkout v%TORCHVISION_BUILD_VERSION%
)

:submodule

git submodule update --init --recursive
IF ERRORLEVEL 1 exit /b 1
