.PHONY: clean pip_dev local_install env_integration
.PHONY: lint test test_unit test_integration
.PHONY: ci_unit_lint ci_unit_lint_clean ci_test_integration

clean:
	rm -rf env \
		tests/integration/env \
		build \
		dist \
		*.egg-info \
		.coverage .pytest_cache \
		.cache \
		coverage.xml \
		pyunit.xml
	find . | grep -E '__pycache__|\.pyc|\.pyo$\' | xargs rm -rf

env:
	python3 -m venv env
	env/bin/pip install -q -U pip setuptools wheel

env/bin/flake8 env/bin/py.test pip_dev: | env
	env/bin/pip install -q -I -r requirements-dev.txt

env_integration: | env
	env/bin/pip install --pre -q -r tests/integration/requirements.txt

local_install: | env
	env/bin/python setup.py install

lint: | env/bin/flake8
	env/bin/flake8 content_utils/ tests/ setup.py

test: | env/bin/py.test
	env/bin/python -m pytest -v \
		tests/unit \
		-s \
		--cov content_utils \
		--cov-report term-missing

test_unit: | env/bin/py.test
	env/bin/python -m pytest tests/unit -v \
		--cov content_utils \
		--cov-report xml \
		--junitxml=pyunit.xml

test_integration: | env_integration
	env/bin/python -m pytest tests/integration

test_integration_local: env env/bin/py.test local_install
	env/bin/python -m pytest tests/integration

ci_unit_lint:
	docker compose run \
		--build \
		--name python-content-utils-unit-lint \
		lint-and-test
	docker cp python-content-utils-unit-lint:/var/app/pyunit.xml ./pyunit.xml
	docker cp python-content-utils-unit-lint:/var/app/coverage.xml ./coverage.xml
	sed -i.bak "s?<source>/var/app/content_utils</source>?<source>$$(pwd)/content_utils</source>?g" coverage.xml
	docker rm -f python-content-utils-unit-lint

ci_unit_lint_clean: clean
	docker rm -f python-content-utils-unit-lint
	docker compose down --remove-orphans

ci_test_integration:
	docker compose run \
		--rm \
		--build \
		--remove-orphans \
		test-integration
