.PHONY: \ poetry in-project-venv dev-env use-env install install-dev tests \ update-version sync-version-with-git \ docker docker-build-run docker-build docker-run \ docker-rm docker-rm-container docker-rm-image \ pre-commit get-licenses prep-commit \ docs sphinx_html sphinx_apidoc .DEFAULT_GOAL := run export DOCKER=docker export DOCKERFILE=Dockerfile export IMAGE_NAME=rule_engine-image export CONTAINER_NAME=rule_engine-container export HOST_PORT=9999 export CONTAINER_PORT=9999 export PYTHON_VERSION=python3.8 # all commands should be executed in the root dir or the project, # specific environments should be deactivated poetry: in-project-venv use-env dev-env in-project-venv: poetry config virtualenvs.in-project true use-env: poetry env use ${PYTHON_VERSION} dev-env: poetry install --with dev install: poetry add $(pkg) install-dev: poetry add --dev $(pkg) requirements: poetry export --without-hashes --output requirements.txt update-version: poetry version prerelease sync-version-with-git: git pull -p && poetry version $(git rev-list --tags --max-count=1 | git describe --tags --abbrev=0) docker: docker-rm docker-build-run docker-build-run: docker-build docker-run docker-build: $(DOCKER) build \ --no-cache --progress=plain \ -t $(IMAGE_NAME) -f $(DOCKERFILE) . docker-run: $(DOCKER) run -it --rm -p $(HOST_PORT):$(CONTAINER_PORT)/tcp --name $(CONTAINER_NAME) $(IMAGE_NAME) python app.py docker-rm: docker-rm-container docker-rm-image docker-rm-container: -$(DOCKER) rm $(CONTAINER_NAME) docker-rm-image: -$(DOCKER) image rm $(IMAGE_NAME) tests: poetry run pytest ./tests prep-commit: docs get-license sync-version-with-git update-version pre-commit pre-commit: pre-commit run --all-files get-licenses: pip-licenses --format=json --order=license --with-urls > pkg-licenses.json docs: sphinx_apidoc sphinx_html sphinx_html: poetry run sphinx-build -b html docs/source/ docs/build/html -E -a sphinx_apidoc: poetry run sphinx-apidoc -o ./docs/source/modules ./src/rule_engine