# Add any tasks that are not dependent on files to the .PHONY list.
.PHONY: dev test lint pip_dev test_unit test_integration clean \
		docker_up docker_down docker_test ci_unit_lint ci_unit_lint_clean

clean:
	rm -rf \
		env \
		.coverage \
		.pytest_cache \
		.cache \
		coverage.xml \
		pyunit.xml
	find . | grep -E '__pycache__|\.pyc|\.pyo$\' | xargs rm -rf

docker_up:
	docker compose up --build -d

docker_down:
	docker compose down --remove-orphans

docker_test:
	docker compose up \
    	--exit-code-from lint-and-test \
    	--abort-on-container-exit \
    	--build lint-and-test

env pip_dev:
	python3.11 -m venv env
	env/bin/pip3.11 install --upgrade pip setuptools
	env/bin/pip3.11 install -r requirements.txt
	env/bin/pip3.11 install -r requirements-dev.txt

dev: env
	env/bin/python3.11 dev.py

test: env
	env/bin/python3.11 -m pytest tests \
		--cov deliveryhistory \
		--cov-report term-missing

test_unit: pip_dev
	env/bin/python3.11 -m pytest -v \
		deliveryhistory tests/ \
		--cov-report xml \
		--junitxml=pyunit.xml

lint: pip_dev
	env/bin/python3.11 -m flake8 deliveryhistory tests dev.py


test_integration:
	echo 'No op'

ci_unit_lint: ci_unit_lint_clean
	mkdir -p build
	chmod a+w build
	make docker_test

ci_unit_lint_clean: docker_down
	rm -rf build
