-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
67 lines (55 loc) · 2.23 KB
/
Makefile
File metadata and controls
67 lines (55 loc) · 2.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
# ──────────────────────────────── VARIABLES ──────────────────────────────── #
PYTHON ?= python3
VENV_DIR ?= .venv
PIP := $(VENV_DIR)/bin/pip
PYTHON_BIN := $(VENV_DIR)/bin/python
ACTIVATE := source $(VENV_DIR)/bin/activate
IMAGE_NAME ?= pdfquery:latest
# Extras to install dev tooling declared in pyproject.toml [project.optional-dependencies.dev]
DEV_EXTRAS := .[dev]
# Ensure bash for nicer scripts
SHELL := /usr/bin/env bash
# ──────────────────────────────── TARGETS ───────────────────────────────── #
.PHONY: help venv install test lint format docker-build clean
help:
@echo "Makefile targets:"
@echo " venv ─ Create virtual environment ($(VENV_DIR))"
@echo " install ─ Install pdfquery in editable mode + dev deps"
@echo " test ─ Run pytest"
@echo " lint ─ Run ruff linting"
@echo " format ─ Run black code formatter"
@echo " docker-build ─ Build local Docker image ($(IMAGE_NAME))"
@echo " clean ─ Remove caches, build artifacts, venv"
# ---------- Setup ----------
venv: $(VENV_DIR)/bin/activate
$(VENV_DIR)/bin/activate: pyproject.toml
@echo "📦 Creating venv in $(VENV_DIR)"
$(PYTHON) -m venv $(VENV_DIR)
@echo "✅ Virtual env ready."
install: venv
@echo "🔧 Installing package + dev extras"
$(PIP) install --upgrade pip
$(PIP) install -e $(DEV_EXTRAS)
@echo "✅ Install complete."
# ---------- Quality ----------
test: venv
@$(ACTIVATE); \
echo "🧪 Running tests…"; \
pytest -q
lint: venv
@$(ACTIVATE); \
$(PIP) install ruff
echo "🔍 Linting with ruff…"; \
ruff check .
format: venv
@$(ACTIVATE); \
echo "🎨 Formatting with black…"; \
black .
# ---------- Docker ----------
docker-build:
@echo "🐳 Building Docker image $(IMAGE_NAME)…"
docker build -t $(IMAGE_NAME) .
# ---------- Clean ----------
clean:
@echo "🧹 Cleaning caches & artifacts"
rm -rf $(VENV_DIR) .pytest_cache .mypy_cache __pycache__ build dist *.egg-info vector