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

:: Batch script to install bazel on the windows host
@echo on

:: Get the latest bazel version number
echo $url = "https://github.com/bazelbuild/bazel/releases/latest" > get_latest_bazel_version.ps1
echo $req=[system.Net.HttpWebRequest]::Create($url); >> get_latest_bazel_version.ps1
echo $res = $req.getresponse(); >> get_latest_bazel_version.ps1
echo $res.Close(); >> get_latest_bazel_version.ps1
echo $res.ResponseUri.AbsolutePath.TrimStart("/bazelbuild/bazel/releases/tag/") >> get_latest_bazel_version.ps1
for /F %%i in ('powershell -file get_latest_bazel_version.ps1') do set BAZEL_VERSION=%%i
del get_latest_bazel_version.ps1

echo %BAZEL_VERSION%

:: Download the latest bazel release
set folder=c:\bazel_ci\installs\%BAZEL_VERSION%

if "%PLATFORM_NAME:~0,12%" == "windows-msvc" (
:: Download MSVC version Bazel, this will fail before MSVC Bazel is released
  set url='https://releases.bazel.build/%BAZEL_VERSION%/release/bazel-msvc-%BAZEL_VERSION%-windows-msvc-x86_64.exe'
) else (
:: Download MSYS version Bazel
  set url='https://releases.bazel.build/releases/%BAZEL_VERSION%/release/bazel-%BAZEL_VERSION%-windows-x86_64.exe'
)

if not exist %folder%\bazel.exe (
  md %folder%
  powershell -Command "(New-Object Net.WebClient).DownloadFile(%url%, '%folder%\bazel.exe')"
)

:: Create a junction to the latest release
rmdir /q c:\bazel_ci\installs\latest
mklink /J c:\bazel_ci\installs\latest %folder%

:: Install Bazel built at HEAD
md c:\bazel_ci\installs\HEAD
if "%PLATFORM_NAME:~0,12%" == "windows-msvc" (
  echo F | xcopy /y "bazel-installer\JAVA_VERSION=1.8,PLATFORM_NAME=windows-msvc-x86_64\output\ci\bazel*.exe" c:\bazel_ci\installs\HEAD\bazel.exe
) else (
  echo F | xcopy /y "bazel-installer\JAVA_VERSION=1.8,PLATFORM_NAME=windows-x86_64\output\ci\bazel*.exe" c:\bazel_ci\installs\HEAD\bazel.exe
)


:: check if installation is successfuly
:: Ignore the failure, if latest MSVC Bazel is not installed.
:: TODO(pcloudy): Remove this after MSVC Bazel is released.
if not exist c:\bazel_ci\installs\latest\bazel.exe (
  if "%PLATFORM_NAME:~0,12%" == "windows-msvc" (
    exit 0
  ) else (
    exit 1
  )
)
if not exist c:\bazel_ci\installs\HEAD\bazel.exe (
  exit 1
)
