:: 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

:: Generate python virtual environment using existing python.
python3 -m venv %~dp0\python-venv

:: Install pip inside the virtual environment.
%~dp0\python-venv\Scripts\python.exe -m pip install --upgrade pip

:: Install all wheel files.
for %%f in (%~dp0\python_wheels\*) do %~dp0\python-venv\Scripts\python.exe -m pip install --upgrade --force-reinstall --find-links=%~dp0\python_wheels %%f
