|
.PHONY: install venv run test clean lint format help |
|
|
|
|
|
PYTHON_VERSION := 3.12 |
|
PYTHON := python$(PYTHON_VERSION) |
|
PIP := pip3 |
|
VENV_NAME := venv |
|
VENV_BIN := $(VENV_NAME)/bin |
|
VENV_PYTHON := $(VENV_BIN)/python |
|
VENV_PIP := $(VENV_BIN)/pip |
|
PORT := 8501 |
|
|
|
|
|
.DEFAULT_GOAL := help |
|
|
|
help: |
|
@echo 'Usage:' |
|
@echo ' make <target>' |
|
@echo '' |
|
@echo 'Targets:' |
|
@awk -F ':|##' '/^[^\t].+?:.*?##/ { printf " %-20s %s\n", $$1, $$NF }' $(MAKEFILE_LIST) |
|
|
|
check-python: |
|
@which $(PYTHON) > /dev/null || (echo "Python $(PYTHON_VERSION) not found. Please install it first." && exit 1) |
|
|
|
$(VENV_NAME): check-python |
|
$(PYTHON) -m venv $(VENV_NAME) |
|
$(VENV_PIP) install --upgrade pip |
|
|
|
install-dev: $(VENV_NAME) |
|
$(VENV_PIP) install -r requirements/dev.txt |
|
|
|
install-prod: $(VENV_NAME) |
|
$(VENV_PIP) install -r requirements/prod.txt |
|
|
|
run: |
|
PYTHONPATH=. $(VENV_BIN)/streamlit run main.py --server.port $(PORT) |
|
|
|
clean: |
|
find . -type d -name "__pycache__" -exec rm -rf {} + |
|
find . -type d -name ".pytest_cache" -exec rm -rf {} + |
|
find . -type f -name "*.pyc" -delete |
|
rm -rf $(VENV_NAME) |
|
|
|
lint: |
|
$(VENV_PIP) install pylint |
|
$(VENV_BIN)/pylint src |
|
|
|
format: |
|
$(VENV_PIP) install black |
|
$(VENV_BIN)/black src |
|
|
|
test: |
|
$(VENV_BIN)/pytest tests |
|
|
|
setup-dev: clean $(VENV_NAME) install-dev |
|
|
|
setup-prod: clean $(VENV_NAME) install-prod |