POETRY = poetry
POETRY_RUN = $(POETRY) run
POETRY_RUN_MANAGE = $(POETRY_RUN) ./manage.py

.DEFAULT_GOAL := run.prod

ifndef TANK_CALLBACK_BASE_URL
override TANK_CALLBACK_BASE_URL = "${AURA_PROTO}://${AURA_HOST}/tank"
endif

ifndef DASHBOARD_CALLBACK_BASE_URL
override DASHBOARD_CALLBACK_BASE_URL = "${AURA_PROTO}://${AURA_HOST}"
endif

initialize: migrate loadfixtures
	$(POETRY_RUN_MANAGE) collectstatic --clear --no-input
	$(POETRY_RUN_MANAGE) createsuperuser --no-input
	$(POETRY_RUN_MANAGE) creatersakey
	$(POETRY_RUN_MANAGE) create_oidc_client dashboard public --client-id ${DASHBOARD_OIDC_CLIENT_ID} --client-secret ${DASHBOARD_OIDC_CLIENT_SECRET} -r "id_token token" -u ${DASHBOARD_CALLBACK_BASE_URL}/oidc_callback.html -u ${DASHBOARD_CALLBACK_BASE_URL}/oidc_callback_silentRenew.html -p ${DASHBOARD_CALLBACK_BASE_URL} -p ${DASHBOARD_CALLBACK_BASE_URL}/
	$(POETRY_RUN_MANAGE) create_oidc_client tank confidential --client-id ${TANK_OIDC_CLIENT_ID} --client-secret ${TANK_OIDC_CLIENT_SECRET} -r "code" -u ${TANK_CALLBACK_BASE_URL}/tank/auth/oidc/callback

showmigrations:
	$(POETRY_RUN_MANAGE) showmigrations

migrate:
	$(POETRY_RUN_MANAGE) migrate --no-input

loadfixtures:
	# TODO: reduce the fixtures loaded to the very minimum
	$(POETRY_RUN_MANAGE) loaddata fixtures/*/*.json

loaddata:
	$(POETRY_RUN_MANAGE) loaddata ${DATA}

removestaleimages:
	$(POETRY_RUN_MANAGE) removestaleimages

run.dev: dev.install migrate
	$(POETRY_RUN_MANAGE) runserver 0.0.0.0:8000

dev.install:
	$(POETRY) install --no-root

run.prod: migrate
	$(POETRY_RUN) gunicorn --bind 0.0.0.0:8000 --workers `nproc` steering.wsgi

run.debug: migrate
	DEBUG=1 $(POETRY_RUN_MANAGE) runserver_plus 0.0.0.0:8000

release: VERSION := `$(POETRY_RUN) python -c 'import tomli; print(tomli.load(open("pyproject.toml", "rb"))["tool"]["poetry"]["version"])'`
release:
	git tag ${VERSION}
	git push origin ${VERSION}
	@echo "Release '${VERSION}' tagged and pushed successfully."