.PHONY: clean env package_install env_missing_extra_deps

EXAMPLE_DIRS = big_picture_demo/ custom_fixture_demo/


clean:
	rm -f *.tar.gz
	rm -rf env .eggs build jwtauth.egg-info .cache .pytest_cache .mypy_cache .coverage coverage.xml
	find . | grep -E '__pycache__|\.pyc|\.pyo$\' | xargs rm -rf

env:
	python3 -mvenv env
	./env/bin/pip3 install -r requirements.txt

	## Build a jwtauth package and install it in the local env
	cd ../../ && rm -rf dist && poetry build
	rm -f *.tar.gz
	@JWTAUTH_PACKAGE_TGZ=$$(ls ../../dist/*.tar.gz | xargs basename); \
	cp ../../dist/$$JWTAUTH_PACKAGE_TGZ .; \
	echo $$JWTAUTH_PACKAGE_TGZ; \
	./env/bin/pip3 install "$$JWTAUTH_PACKAGE_TGZ[testing]"; \
	rm $$JWTAUTH_PACKAGE_TGZ

fmt: env
	env/bin/ruff check $(EXAMPLE_DIRS) env_missing_extra_deps/ --fix
	env/bin/ruff format $(EXAMPLE_DIRS) env_missing_extra_deps/

lint: env
	env/bin/mypy $(EXAMPLE_DIRS) env_missing_extra_deps/
	env/bin/ruff check $(EXAMPLE_DIRS) env_missing_extra_deps/
	env/bin/ruff format $(EXAMPLE_DIRS) env_missing_extra_deps/ --check --diff

examples: env
	./env/bin/pytest -x -vv -s $(EXAMPLE_DIRS)

env_missing_extra_deps: clean
	python3 -mvenv env
	./env/bin/pip3 install pytest

	## Build a jwtauth package and install it in the local env
	cd ../../ && rm -rf dist && poetry build
	rm -f *.tar.gz
	@JWTAUTH_PACKAGE_TGZ=$$(ls ../../dist/*.tar.gz | xargs basename); \
	cp ../../dist/$$JWTAUTH_PACKAGE_TGZ .; \
	echo $$JWTAUTH_PACKAGE_TGZ; \
	./env/bin/pip3 install "$$JWTAUTH_PACKAGE_TGZ"; \
	rm $$JWTAUTH_PACKAGE_TGZ

	@echo "\n\n\033[0;31mThis should raise an error due to missing dependencies.\033[0m"
	./env/bin/pytest -x -vv -s env_missing_extra_deps/test_example_failed_plugin_import.py || true

	@echo "\n\n\033[0;32mThis should NOT raise an error due to missing dependencies\033[0m"
	./env/bin/pytest -x -vv -s env_missing_extra_deps/test_example_success_no_plugin_import.py

