-
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathMakefile
More file actions
94 lines (83 loc) · 3.78 KB
/
Copy pathMakefile
File metadata and controls
94 lines (83 loc) · 3.78 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
.PHONY: help setup check-tools clean setup-filters-api setup-sisu-wrapper setup-backend setup-frontend setup-certs compile-requirements
help:
@echo "Available targets:"
@echo " setup - Set up all components (includes localhost certs)"
@echo " check-tools - Verify required tools are installed"
@echo " setup-certs - Generate mkcert localhost certificates"
@echo " compile-requirements - Compile requirements.in to requirements.txt"
@echo " clean - Remove virtual environments and dependencies"
check-tools:
@command -v uv >/dev/null 2>&1 || (echo "Error: uv not found. Install from https://astral.sh/uv" && exit 1)
@command -v node >/dev/null 2>&1 || (echo "Error: node not found. Install from https://nodejs.org" && exit 1)
@command -v mkcert >/dev/null 2>&1 || (echo "Warning: mkcert not found. Install from https://github.com/FiloSottile/mkcert" && echo "Run 'make setup-certs' to generate certificates once mkcert is installed")
setup: check-tools setup-filters-api setup-sisu-wrapper setup-backend setup-frontend setup-certs
@echo "✓ Setup complete!"
compile-requirements:
@echo "Compiling requirements.in to requirements.txt..."
cd filters-api && uv pip compile requirements.in --universal --output-file requirements.txt
cd sisu-wrapper && uv pip compile requirements.in --universal --output-file requirements.txt
@echo "Requirements compiled. Remember to commit the updated requirements.txt files!"
# --- Certificate Generation ---
setup-certs:
@echo "Setting up localhost certificates with mkcert..."
@if ! command -v mkcert >/dev/null 2>&1; then \
echo "⚠️ mkcert not found (skipping - optional for development)"; \
echo "To generate certificates locally, install mkcert:"; \
echo " macOS: brew install mkcert"; \
echo " Linux: https://github.com/FiloSottile/mkcert#installation"; \
echo " Windows: choco install mkcert"; \
exit 0; \
fi
@mkdir -p frontend/course-browser
@if [ ! -f frontend/course-browser/localhost.pem ] || [ ! -f frontend/course-browser/localhost-key.pem ]; then \
echo "Generating localhost certificates..."; \
cd frontend/course-browser && mkcert -cert-file localhost.pem -key-file localhost-key.pem localhost 127.0.0.1; \
echo "✓ Certificates generated at frontend/course-browser/"; \
else \
echo "✓ Localhost certificates already exist"; \
fi
# --- Backend / Python Services (using uv) ---
setup-filters-api:
@echo "Setting up filters-api..."
cd filters-api && \
uv venv --python 3.12 .venv && \
if [ -f requirements.in ]; then \
uv pip compile requirements.in --universal --output-file requirements.txt; \
fi && \
uv pip sync requirements.txt && \
cp .env.example .env || true
@echo "✓ filters-api setup complete"
setup-sisu-wrapper:
@echo "Setting up sisu-wrapper..."
cd sisu-wrapper && \
uv venv --python 3.12 .venv && \
if [ -f requirements.in ]; then \
uv pip compile requirements.in --universal --output-file requirements.txt; \
fi && \
uv pip sync requirements.txt && \
cp .env.example .env || true
@echo "✓ sisu-wrapper setup complete"
# --- Backend / Node ---
setup-backend:
@echo "Setting up backend..."
cd backend && \
npm ci --ignore-scripts && \
cp .env.example .env || true
@echo "✓ backend setup complete"
# --- Frontend / Node ---
setup-frontend:
@echo "Setting up frontend..."
cd frontend/course-browser && \
npm ci --ignore-scripts && \
cp .env.example .env || true
@echo "✓ frontend setup complete"
# --- Cleanup ---
clean:
@echo "Cleaning up..."
rm -rf filters-api/.venv sisu-wrapper/.venv
rm -rf backend/node_modules frontend/course-browser/node_modules
@echo "✓ Cleanup complete"
clean-certs:
@echo "Removing localhost certificates..."
rm -f frontend/course-browser/localhost.pem frontend/course-browser/localhost-key.pem
@echo "✓ Certificates removed"