.PHONY: clean env dev_env pip_lock_versions dev lint test start_db stop_db \
				ci_unit_lint ci_unit_lint_clean ci_test_integration ci_test_integration_clean \
				docker_unit_lint down_unit_lint docker_test_integration docker_test_integration \
				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.11 -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
	if [ ! -f env/bin/py.test ]; then env/bin/python -m pip install -q -I -r requirements.txt -r requirements-dev.txt; fi

dev: dev_env
	env/bin/python dev.py

lint: dev_env
	env/bin/python -m flake8 manualadjustment/ tests/ utils/ application.py dev.py

test: dev_env
	env/bin/python -m pytest tests/ --cov manualadjustment --cov-report term-missing

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

ci_unit_lint_clean: down_unit_lint
	rm -rf build

ci_test_integration: ci_test_integration_clean
	mkdir -p build
	chmod a+w build
	make docker_test_integration

ci_test_integration_clean: down_test_integration
	rm -rf build

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

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

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

down_test_integration:
	docker compose down test-integration --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
