.PHONY: install dev test lint clean help build container-run container-stop container-logs update-data up down logs APP_NAME := derp VENV := .venv PIP := $(VENV)/bin/pip PYTHON := $(VENV)/bin/python PYTEST := $(VENV)/bin/pytest RUFF := $(VENV)/bin/ruff help: ## Show this help @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | \ awk 'BEGIN {FS = ":.*?## "}; {printf " \033[38;5;110m%-12s\033[0m %s\n", $$1, $$2}' venv: ## Create virtual environment python3 -m venv $(VENV) $(PIP) install --upgrade pip install: venv ## Install package (editable) $(PIP) install -e . $(PIP) install pytest ruff test: ## Run tests $(PYTEST) -v lint: ## Run linter $(RUFF) check src/ tests/ plugins/ fmt: ## Format code $(RUFF) format src/ tests/ plugins/ run: ## Run the bot $(PYTHON) -m derp clean: ## Remove build artifacts rm -rf build/ dist/ *.egg-info src/*.egg-info find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true link: install ## Symlink to ~/.local/bin ln -sf $$(pwd)/$(VENV)/bin/derp ~/.local/bin/derp @echo "Installed: $$(which derp)" build: ## Build container image podman build -t $(APP_NAME) . container-run: ## Run bot in container (mount code + config + data) podman run -d --name $(APP_NAME) \ -v ./src:/app/src:ro,Z \ -v ./plugins:/app/plugins:ro,Z \ -v ./config/derp.toml:/app/config/derp.toml:ro,Z \ -v ./data:/app/data:Z \ $(APP_NAME) container-stop: ## Stop and remove container podman stop $(APP_NAME) && podman rm $(APP_NAME) container-logs: ## Follow container logs podman logs -f $(APP_NAME) update-data: ## Download/refresh local data files ./scripts/update-data.sh up: ## Start with podman-compose (detach) podman-compose up -d down: ## Stop with podman-compose podman-compose down logs: ## Follow compose logs podman-compose logs -f