@rem Copyright 2022 The gRPC Authors
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem     http://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.

@rem Avoid slow finalization after the script has exited.
@rem See the script's prologue for info on the correct invocation pattern.
setlocal EnableDelayedExpansion
IF "%cd%"=="T:\src" (
  call %~dp0\..\..\..\tools\internal_ci\helper_scripts\move_src_tree_and_respawn_itself.bat %0
  echo respawn script has finished with exitcode !errorlevel!
  exit /b !errorlevel!
)
endlocal

@rem enter repo root
cd /d %~dp0\..\..\..

set PREPARE_BUILD_INSTALL_DEPS_CSHARP=true
call tools/internal_ci/helper_scripts/prepare_build_windows.bat || exit /b 1

call tools/internal_ci/helper_scripts/prepare_ccache.bat || exit /b 1

@rem Install Msys2 zip to avoid crash when using cygwin's zip on grpc-win2016 kokoro workers.
@rem Downloading from GCS should be very reliables when on a GCP VM.
@rem TODO(jtattermusch): find a better way of making the build_packages step work on windows workers.
mkdir C:\zip
curl -sSL --fail -o C:\zip\zip.exe https://storage.googleapis.com/grpc-build-helper/zip-3.0-1-x86_64/zip.exe || goto :error
set PATH=C:\zip;%PATH%
zip --version

@rem Build all C# windows artifacts
python tools/run_tests/task_runner.py -f artifact windows csharp %TASK_RUNNER_EXTRA_FILTERS% -j 4 --inner_jobs 4 -x build_artifacts_csharp/sponge_log.xml || set FAILED=true

@rem Build all protoc windows artifacts
python tools/run_tests/task_runner.py -f artifact windows protoc %TASK_RUNNER_EXTRA_FILTERS% -j 4 --inner_jobs 4 -x build_artifacts_protoc/sponge_log.xml || set FAILED=true

@rem the next step expects to find the artifacts from the previous step in the "input_artifacts" folder.
bash -c "rm -rf input_artifacts; mkdir -p input_artifacts; cp -r artifacts/* input_artifacts/ || true"

@rem This step builds the nuget packages from input_artifacts
@rem Set env variable option to build single platform version of the nugets.
@rem (this is required as we only have the windows artifacts at hand)
set GRPC_CSHARP_BUILD_SINGLE_PLATFORM_NUGET=1 
python tools/run_tests/task_runner.py -f package windows csharp nuget -j 2 -x build_packages/sponge_log.xml || set FAILED=true

@rem the next step expects to find the artifacts from the previous step in the "input_artifacts" folder.
@rem in addition to that, preserve the contents of "artifacts" directory since we want kokoro
@rem to upload its contents as job output artifacts
bash -c "rm -rf input_artifacts; mkdir -p input_artifacts; cp -r artifacts/* input_artifacts/ || true"

@rem Run all C# windows distribtests
@rem We run the distribtests even if some of the artifacts have failed to build, since that gives
@rem a better signal about which distribtest are affected by the currently broken artifact builds.
python tools/run_tests/task_runner.py -f distribtest windows csharp %TASK_RUNNER_EXTRA_FILTERS% -j 4 -x distribtests/sponge_log.xml || set FAILED=true

@rem show ccache stats
ccache --show-stats

bash tools/internal_ci/helper_scripts/store_artifacts_from_moved_src_tree.sh

if not "%FAILED%" == "" (
  exit /b 1
)
