.PHONY: help prepare-dev test lint run doc

VENV_NAME?=venv
VENV_ACTIVATE=. $(VENV_NAME)/bin/activate
PYTHON=${VENV_NAME}/bin/python3

.DEFAULT: help
help:
    @echo "make prepare-dev"
    @echo "       prepare development environment, use only once"
    @echo "make test"
    @echo "       run tests"
    @echo "make lint"
    @echo "       run pylint and mypy"
    @echo "make run"
    @echo "       run project"
    @echo "make clean"
    @echo "       clean python cache files"
    @echo "make doc"
    @echo "       build sphinx documentation"


# Install Python and build venv
prepare-dev:
    sudo apt-get -y install python3.6 python3-pip
    python -m venv venv

# Enter venv
venv: $(VENV_PATH)/bin/activate
  source $(VENV_PATH)/bin/activate

test: venv
    ${PYTHON} -m pytest

lint: venv
    ${PYTHON} -m pylint
    ${PYTHON} -m mypy

run: venv
    ${PYTHON} app.py


clean-pyc:
    @find . -name '*.pyc' -delete
    @find . -name '__pycache__' -type d | xargs rm -fr
    @find . -name '.pytest_cache' -type d | xargs rm -fr

clean:clean-pyc
    @echo "## Clean all data."

doc: venv
    $(VENV_ACTIVATE) && cd docs; make html
