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

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

dev:
	venv/bin/python3.13 dev.py

env:
	python3.13 -m venv venv

pip_dev: env
	venv/bin/pip install --upgrade pip
	venv/bin/pip install -r requirements.txt
	venv/bin/pip install -r requirements-dev.txt

lint: env
	venv/bin/ruff check marketing/ tests/ dev.py

test_unit:
	venv/bin/py.test -v \
		--ignore=tests/integration/ \
		--cov marketing tests \
		--cov-report xml \
		--junitxml=pyunit.xml

test_integration:
	venv/bin/py.test tests/integration --junitxml=pyunit.xml

up_dev:
	docker compose up \
		--build \
		--detach \
		--remove-orphans \
		dev

down_dev:
	docker-compose down \
		--remove-orphans \
		dev

docker_unit_lint:
	docker compose up \
    	--exit-code-from unit-lint \
    	--abort-on-container-exit \
    	--build unit-lint

docker_unit_lint_clean:
	docker compose down \
		--remove-orphans \
		unit-lint

docker_test_integration:
	docker compose up \
		--build \
		--exit-code-from test-integration \
		--abort-on-container-exit \
		--remove-orphans \
		test-integration
