# Build configuration # ------------------- APP_NAME := `sed -n 's/^ *name.*=.*"\([^"]*\)".*/\1/p' pyproject.toml` APP_VERSION := `sed -n 's/^ *version.*=.*"\([^"]*\)".*/\1/p' pyproject.toml` GIT_REVISION = `git rev-parse HEAD` # Introspection targets # --------------------- .PHONY: help help: header targets .PHONY: header header: @echo "\033[34mEnvironment\033[0m" @echo "\033[34m---------------------------------------------------------------\033[0m" @printf "\033[33m%-23s\033[0m" "APP_NAME" @printf "\033[35m%s\033[0m" $(APP_NAME) @echo "" @printf "\033[33m%-23s\033[0m" "APP_VERSION" @printf "\033[35m%s\033[0m" $(APP_VERSION) @echo "" @printf "\033[33m%-23s\033[0m" "GIT_REVISION" @printf "\033[35m%s\033[0m" $(GIT_REVISION) @echo "\n" .PHONY: targets targets: @echo "\033[34mDevelopment Targets\033[0m" @echo "\033[34m---------------------------------------------------------------\033[0m" @perl -nle'print $& if m{^[a-zA-Z_-]+:.*?## .*$$}' $(MAKEFILE_LIST) | sort | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-22s\033[0m %s\n", $$1, $$2}' # Development targets # ------------- .PHONY: install install: ## Install dependencies poetry install .PHONY: run run: start .PHONY: start start: ## Starts the server poetry run python run.py # Check, lint and format targets # ------------------------------ .PHONY: check check: check-format lint .PHONY: check-format check-format: ## Dry-run code formatter poetry run black ./ --check poetry run isort ./ --profile black --check .PHONY: lint lint: ## Run ruff poetry run ruff check ./app .PHONY: format format: ## Run code formatter poetry run black ./ poetry run isort ./ --profile black .PHONY: check-lockfile check-lockfile: ## Compares lock file with pyproject.toml poetry lock --check .PHONY: test test: ## Run the test suite $(eval include .env) $(eval export $(sh sed 's/=.*//' .env)) poetry run pytest -vv -s --cache-clear ./