-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMakefile
More file actions
144 lines (122 loc) · 5.15 KB
/
Copy pathMakefile
File metadata and controls
144 lines (122 loc) · 5.15 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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
.PHONY: help install install-api install-web bootstrap-uv \
dev-api dev-web \
test test-api test-web lint typecheck eval seed \
docker-build docker-up docker-down docker-logs clean \
precommit-install ci-api ci-web
# ------------------------------------------------------------------------------
# All Python work goes through `uv` — it manages the venv, lockfile, and
# Python interpreter. No 'python3-venv' system package required.
# Targets that run Python use `uv run`, which executes inside apps/api/.venv
# (created on `make install-api`).
# ------------------------------------------------------------------------------
UV_RUN_API := cd apps/api && uv run
# ------------------------------------------------------------------------------
# Help
# ------------------------------------------------------------------------------
help:
@echo "Mini RAG — make targets"
@echo ""
@echo " bootstrap-uv Install uv (curl | sh)"
@echo " install Install API (uv sync) + web (pnpm)"
@echo " install-api uv sync --all-extras inside apps/api"
@echo " install-web pnpm install inside apps/web"
@echo ""
@echo " dev-api Run API on :8000 via uv"
@echo " dev-web Run web on :3000 via pnpm"
@echo ""
@echo " test Run all tests (API + web)"
@echo " lint Lint API + web"
@echo " typecheck Type-check API + web"
@echo ""
@echo " eval Run eval harness; writes JSON to eval_results/"
@echo " seed Seed runtime DB with the eval corpus"
@echo ""
@echo " docker-build Build images"
@echo " docker-up Bring stack up (detached)"
@echo " docker-logs Tail compose logs"
@echo " docker-down Tear stack down"
@echo ""
@echo " precommit-install Install pre-commit hooks"
@echo " clean Remove build artifacts, caches, and data"
# ------------------------------------------------------------------------------
# Bootstrap
# ------------------------------------------------------------------------------
bootstrap-uv:
@if command -v uv >/dev/null 2>&1; then \
echo "uv already installed: $$(uv --version)"; \
else \
echo "Installing uv via official script…"; \
curl -LsSf https://astral.sh/uv/install.sh | sh; \
echo ""; \
echo "uv installed. Open a new shell or run: source \$$HOME/.local/bin/env"; \
fi
# ------------------------------------------------------------------------------
# Install
# ------------------------------------------------------------------------------
install: install-api install-web
install-api:
@command -v uv >/dev/null 2>&1 || { \
echo "uv is not installed. Run 'make bootstrap-uv' first."; \
exit 1; \
}
cd apps/api && uv sync --all-extras
install-web:
cd apps/web && pnpm install
# ------------------------------------------------------------------------------
# Dev
# ------------------------------------------------------------------------------
dev-api:
$(UV_RUN_API) uvicorn src.main:app --host 0.0.0.0 --port 8000 --reload
dev-web:
cd apps/web && pnpm dev
# ------------------------------------------------------------------------------
# Test / Lint / Typecheck
# ------------------------------------------------------------------------------
test: test-api test-web
test-api:
$(UV_RUN_API) pytest -q
test-web:
cd apps/web && pnpm test --run || true
lint:
$(UV_RUN_API) ruff check src tests
cd apps/web && pnpm lint
typecheck:
$(UV_RUN_API) mypy src
cd apps/web && pnpm typecheck
ci-api: lint typecheck test-api
ci-web:
cd apps/web && pnpm install --frozen-lockfile && pnpm lint && pnpm typecheck && pnpm build
# ------------------------------------------------------------------------------
# Eval / Seed
# ------------------------------------------------------------------------------
eval:
$(UV_RUN_API) python -m src.eval.harness
seed:
$(UV_RUN_API) python -m src.scripts.seed_pg_essays
# ------------------------------------------------------------------------------
# Docker
# ------------------------------------------------------------------------------
docker-build:
docker compose build
docker-up:
docker compose up -d
docker-logs:
docker compose logs -f --tail=200
docker-down:
docker compose down
# ------------------------------------------------------------------------------
# Pre-commit
# ------------------------------------------------------------------------------
precommit-install:
$(UV_RUN_API) pre-commit install || pip install --user --break-system-packages pre-commit && pre-commit install
# ------------------------------------------------------------------------------
# Clean
# ------------------------------------------------------------------------------
clean:
find . -type d -name "__pycache__" -prune -exec rm -rf {} +
find . -type d -name ".pytest_cache" -prune -exec rm -rf {} +
find . -type d -name ".mypy_cache" -prune -exec rm -rf {} +
find . -type d -name ".ruff_cache" -prune -exec rm -rf {} +
find . -type d -name ".next" -prune -exec rm -rf {} +
find . -type d -name "node_modules" -prune -exec rm -rf {} +
rm -rf apps/api/.venv apps/api/data apps/api/.hf_cache eval_results/*.json