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

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

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

lint: env
		flake8 masters_registry/ tests/

test: env
		env/bin/py.test tests/

test_unit: env
		env/bin/py.test \
			--cov masters_registry tests/ \
			--cov-report xml \
			--junitxml=pyunit.xml

test_integration:
	echo 'No op'

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

up_dev:
		docker compose up \
				--detach \
				--remove-orphans \
				masters-registry-dev

down_dev:
		docker compose down masters-registry-dev

up_deploy:
		docker compose build \
				--no-cache \
				masters-registry-deploy
		docker compose up \
				--detach \
				--remove-orphans \
				masters-registry-deploy

down_deploy:
		docker compose down masters-registry-deploy

docker_unit_lint:
		docker compose run \
				--name ows-masters-registry-lint-test \
				--build \
				lint-and-test
		docker cp ows-masters-registry-lint-test:/var/app/build/pyunit.xml ./pyunit.xml
		docker cp ows-masters-registry-lint-test:/var/app/build/coverage.xml ./coverage.xml
# set the coverage report path to the local machine directory so jenkins can find the sources
		sed -i.bak "s?<source>/var/app/masters_registry</source>?<source>$$(pwd)/masters_registry</source>?g" coverage.xml
		docker rm -f ows-masters-registry-lint-test

down_unit_lint:
		docker compose down lint-and-test --remove-orphans

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

integration_job: clean test_integration
