#!/bin/bash
#
# Compile all the requirements files.
#
# The pip-compile commands below need to be run in a certain order because some
# of the requirements/*.in files depend on other requirements/*.txt files.
#
# FIXME: These pip-compile commands should be using the --generate-hashes
# option but it makes tox-pip-sync crash. We need to fix tox-pip-sync's
# requirements file parsing then we can change all the pip-compile commands
# below to pip-compile --generate-hashes.
set -euo pipefail

export CUSTOM_COMPILE_COMMAND="$0"

touch -a requirements/requirements.txt
touch -a requirements/dev.txt
touch -a requirements/tests.txt
touch -a requirements/lint.txt
touch -a requirements/coverage.txt
touch -a requirements/format.txt

pyenv exec tox -e dev --force-dep 'pip-tools' --run-command 'pip-compile --output-file requirements/requirements.txt setup.cfg'
pyenv exec tox -e dev --force-dep 'pip-tools' --run-command 'pip-compile requirements/dev.in'
pyenv exec tox -e tests --force-dep 'pip-tools' --run-command 'pip-compile requirements/tests.in'
pyenv exec tox -e lint --force-dep 'pip-tools' --run-command 'pip-compile requirements/lint.in'
pyenv exec tox -e coverage --force-dep 'pip-tools' --run-command 'pip-compile requirements/coverage.in'
pyenv exec tox -e format --force-dep 'pip-tools' --run-command 'pip-compile requirements/format.in'

touch -a requirements/requirements-py39.txt
touch -a requirements/dev-py39.txt
touch -a requirements/tests-py39.txt
pyenv exec tox -e py39-dev --force-dep 'pip-tools' --run-command 'pip-compile --output-file requirements/requirements-py39.txt setup.cfg'
pyenv exec tox -e py39-dev --force-dep 'pip-tools' --run-command 'pip-compile --output-file requirements/dev-py39.txt requirements/dev.in'
pyenv exec tox -e py39-tests --force-dep 'pip-tools' --run-command 'pip-compile --output-file requirements/tests-py39.txt requirements/tests.in'

touch -a requirements/requirements-py38.txt
touch -a requirements/dev-py38.txt
touch -a requirements/tests-py38.txt
pyenv exec tox -e py38-dev --force-dep 'pip-tools' --run-command 'pip-compile --output-file requirements/requirements-py38.txt setup.cfg'
pyenv exec tox -e py38-dev --force-dep 'pip-tools' --run-command 'pip-compile --output-file requirements/dev-py38.txt requirements/dev.in'
pyenv exec tox -e py38-tests --force-dep 'pip-tools' --run-command 'pip-compile --output-file requirements/tests-py38.txt requirements/tests.in'
