.PHONY:
	clean env dev_env pip_lock_versions dev lint test \
	docker_dev docker_dev_up docker_dev_down \
	docker_test docker_test_up docker_test_down \
	docker_login

clean:
	if [ -f report.html ]; then rm -r report.html; fi
	rm -rf env .coverage .pytest_cache .cache coverage.xml pyunit.xml
	find . | grep -E '__pycache__|\.pyc|\.pyo$\' | xargs rm -rf

env:
	python3.12 -m venv env
	env/bin/python -m pip install -q -U pip setuptools wheel
	env/bin/python -m pip install -q -I -r requirements.txt

dev_env: env
	env/bin/python -m pip install -q -I -r requirements-dev.txt

pip_lock_versions: clean
	python3.12 -m venv env
	env/bin/python -m pip install -q -U pip setuptools wheel
	env/bin/python -m pip install -q -I -r requirements-to-freeze.txt
	echo "-i https://pypi.theorchard.io/pypi/" > requirements.txt
	env/bin/python -m pip freeze >> requirements.txt

dev:
	env/bin/python dev.py

lint:
	env/bin/python -m flake8 app.py dev.py extract_sales/ tests/
	env/bin/yamllint -d relaxed ./

test:
	env/bin/python -m pytest tests/unit \
		--cov app \
		--cov extract_sales \
		--cov-report term-missing

docker_dev: docker_dev_down docker_dev_up

docker_dev_up:
	docker compose up --build -d dev

docker_dev_down:
	docker compose down dev --volumes --remove-orphans

docker_test: docker_test_down docker_test_up

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

docker_test_down:
	docker compose down unit-lint --volumes --remove-orphans

docker_login:
	aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 437795906767.dkr.ecr.us-east-1.amazonaws.com
	aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin 086679231553.dkr.ecr.us-east-1.amazonaws.com
