67 lines
2.2 KiB
Makefile
67 lines
2.2 KiB
Makefile
.DEFAULT_GOAL := check
|
|
|
|
DATABASE_URL ?= sqlite:data.db?mode=rwc
|
|
IMAGE ?= registry.gabrielkaszewski.dev/k-notes:latest
|
|
|
|
# ── Local dev ─────────────────────────────────────────────────────────────────
|
|
|
|
# Start the API server. JWT_SECRET is required; this default is dev-only.
|
|
dev:
|
|
DATABASE_URL=$(DATABASE_URL) JWT_SECRET=dev-secret-not-for-production-use \
|
|
cargo run -p bootstrap
|
|
|
|
# Start the background worker (uses in-memory bus when NATS_URL is unset).
|
|
dev-worker:
|
|
DATABASE_URL=$(DATABASE_URL) cargo run -p worker
|
|
|
|
# Start the Vite dev server for the frontend (expects the API on :3000).
|
|
dev-frontend:
|
|
cd k-notes-frontend && bun run dev
|
|
|
|
# Build the frontend SPA into k-notes-frontend/dist.
|
|
build-frontend:
|
|
cd k-notes-frontend && bun install && bun run build
|
|
|
|
# ── Quality checks ────────────────────────────────────────────────────────────
|
|
|
|
# Run the full check suite (same order as CI).
|
|
check: fmt-check clippy test
|
|
@echo "✅ All checks passed"
|
|
|
|
fmt:
|
|
cargo fmt
|
|
|
|
fmt-check:
|
|
cargo fmt --check
|
|
|
|
clippy:
|
|
cargo clippy --workspace -- -D warnings
|
|
|
|
test:
|
|
cargo test --workspace
|
|
|
|
# Apply fmt + clippy fixes in one shot.
|
|
fix:
|
|
cargo fmt
|
|
cargo clippy --fix --allow-dirty --allow-staged
|
|
|
|
# ── Docker ────────────────────────────────────────────────────────────────────
|
|
|
|
docker-build:
|
|
docker buildx build --platform linux/amd64 -t $(IMAGE) .
|
|
|
|
docker-push:
|
|
docker push $(IMAGE)
|
|
|
|
deploy:
|
|
IMAGE=$(IMAGE) ./deploy.sh
|
|
|
|
# ── Housekeeping ──────────────────────────────────────────────────────────────
|
|
|
|
clean:
|
|
cargo clean
|
|
rm -f data.db data.db-wal data.db-shm
|
|
|
|
.PHONY: dev dev-worker dev-frontend build-frontend check fmt fmt-check clippy test fix \
|
|
docker-build docker-push deploy clean
|