:: Copyright 2021 The Pigweed Authors
::
:: 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
::
::     https://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.
@echo off

set "ROOT_DIR=%~dp0"
set "WHEEL_DIR=%ROOT_DIR%\python_wheels"

:: Generate python virtual environment using existing python.
python -m venv "%ROOT_DIR%\python-venv"
:: Use the venv python for pip installs
set "python=%ROOT_DIR%\python-venv\Scripts\python.exe"

set "CONSTRAINT_PATH=%ROOT_DIR%\constraints.txt"
set "CONSTRAINT_ARG="
if exist "%CONSTRAINT_PATH%" (
  set "CONSTRAINT_ARG=--constraint=%CONSTRAINT_PATH%"
)

set "EXTRA_REQUIREMENT_PATH=%WHEEL_DIR%\requirements.txt"
set "EXTRA_REQUIREMENT_ARG="
if exist "%EXTRA_REQUIREMENT_PATH%" (
  set "EXTRA_REQUIREMENT_ARG=--requirement=%EXTRA_REQUIREMENT_PATH%"
)

:: Run pip install in the venv.
:: Note: pip install --require-hashes will be triggered if any hashes are present
:: in the requirement.txt file.
call "%python%" -m pip install ^
    "--find-links=%ROOT_DIR%python_wheels" ^
    "--requirement=requirements.txt" %EXTRA_REQUIREMENT_ARG% %CONSTRAINT_ARG%
