#!/usr/bin/make -f

PYTHON = python
VENV   = .venv
PORT   = 8006

help:
	@echo "Setup:"
	@echo "  venv           Setup virtual environment"
	@echo "  install        Install dependencies to venv"
	@echo "  install-hooks  Install pre-commit hooks"
	@echo "  hooks          Run pre-commit hooks manually"
	@echo "  upgrade        Upgrade requirements"
	@echo ""
	@echo "Application:"
	@echo "  run            Run the application on port ${PORT}"
	@echo "  shell          Run Django shell"
	@echo "  worker         Run Celery worker"
	@echo ""
	@echo "Database:"
	@echo "  migrations     Generate migrations"
	@echo "  migrate        Run migrations"
	@echo ""
	@echo "Testing:"
	@echo "  test           Run tests"
	@echo "  coverage       Coverage report"
	@echo ""

venv: .venv/bin/python
.venv/bin/python:
	${PYTHON} -m venv ${VENV}

install: venv
	${VENV}/bin/pip install -r requirements/base.txt -r requirements/dev.txt

install-hooks:
	pre-commit install --install-hooks

hooks:
	pre-commit run -a

run: venv
	${VENV}/bin/python manage.py runserver ${PORT}

shell: venv
	${VENV}/bin/python manage.py shell_plus

worker: venv
	${VENV}/bin/celery -A majak worker --pool solo -E -l INFO

migrations: venv
	${VENV}/bin/python manage.py makemigrations

migrate: venv
	${VENV}/bin/python manage.py migrate

test:
	${VENV}/bin/pytest

coverage:
	${VENV}/bin/pytest --cov --cov-report term-missing

upgrade:
	(cd requirements && pip-compile -U base.in)
	(cd requirements && pip-compile -U dev.in)
	(cd requirements && pip-compile -U production.in)


.PHONY: help venv install install-hooks hooks run shell upgrade
.PHONY: migrations migrate test coverage

# EOF