all: css migrate

initialize: npm css migrate sethookdir loadplatforms

HTMLFILES := $(shell find games/templates -type f)
PYTHON_VERSION = 3.12

npm:
	npm install

css: common/input.css
	npx tailwindcss -i ./common/input.css -o  ./games/static/base.css

makemigrations:
	poetry run python manage.py makemigrations

migrate: makemigrations
	poetry run python manage.py migrate

init:
	pyenv install -s $(PYTHON_VERSION)
	pyenv local $(PYTHON_VERSION)
	pip install poetry
	poetry install
	npm install

dev:
	@npx concurrently \
		--names "Django,Tailwind" \
		--prefix-colors "blue,green" \
		"poetry run python -Wa manage.py runserver" \
		"npx tailwindcss -i ./common/input.css -o ./games/static/base.css --watch"


caddy:
	caddy run --watch

dev-prod: migrate collectstatic
	PROD=1 poetry run python -m gunicorn --bind 0.0.0.0:8001 timetracker.asgi:application -k uvicorn.workers.UvicornWorker

dumpgames:
	poetry run python manage.py dumpdata --format yaml games --output tracker_fixture.yaml

loadplatforms:
	poetry run python manage.py loaddata platforms.yaml

loadall:
	poetry run python manage.py loaddata data.yaml

loadsample:
	poetry run python manage.py loaddata sample.yaml

createsuperuser:
	poetry run python manage.py createsuperuser

shell:
	poetry run python manage.py shell

collectstatic:
	poetry run python manage.py collectstatic --clear --no-input

poetry.lock: pyproject.toml
	poetry install

test: poetry.lock
	poetry run pytest

date:
	poetry run python -c 'import datetime; from zoneinfo import ZoneInfo; print(datetime.datetime.isoformat(datetime.datetime.now(ZoneInfo("Europe/Prague")), timespec="minutes", sep=" "))'

cleanstatic:
	rm -r static/*

clean: cleanstatic