init
This commit is contained in:
@@ -0,0 +1,87 @@
|
||||
# SMGW PKI · Monorepo runner.
|
||||
# Run `just` (no args) to list recipes.
|
||||
|
||||
set shell := ["bash", "-euo", "pipefail", "-c"]
|
||||
|
||||
repo := justfile_directory()
|
||||
deploy := repo / "deploy"
|
||||
backend := repo / "backend"
|
||||
frontend := repo / "frontend"
|
||||
|
||||
# Default target — print recipe list.
|
||||
default:
|
||||
@just --list --unsorted
|
||||
|
||||
# ─── Compose lifecycle ───────────────────────────────────────────────────────
|
||||
|
||||
# Bring stack up (attached). Builds on first run.
|
||||
up *ARGS:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml up {{ARGS}}
|
||||
|
||||
# Bring stack up detached.
|
||||
up-d *ARGS:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml up -d {{ARGS}}
|
||||
|
||||
# Stop and remove containers + network. Volumes preserved.
|
||||
down:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml down
|
||||
|
||||
# Rebuild images. `just rebuild backend` rebuilds one service.
|
||||
build *ARGS:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml build {{ARGS}}
|
||||
|
||||
rebuild *ARGS:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml build --no-cache {{ARGS}}
|
||||
|
||||
# Tail logs (default: both services). Pass a service to filter.
|
||||
logs *ARGS:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml logs -f {{ARGS}}
|
||||
|
||||
# Reload nginx config without restarting the container.
|
||||
nginx-reload:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml exec frontend nginx -s reload
|
||||
|
||||
# Compose status table.
|
||||
ps:
|
||||
docker compose --project-directory {{deploy}} -f {{deploy}}/compose.yaml ps
|
||||
|
||||
# ─── Local dev (without Docker) ──────────────────────────────────────────────
|
||||
|
||||
# Run the Rust backend locally with dev-auth + CORS for Vite.
|
||||
dev-backend:
|
||||
cd {{backend}} && DEV_AUTH=1 CORS_ALLOW_ORIGIN=http://localhost:5173 cargo run
|
||||
|
||||
# Run the Vite dev server (expects backend on :8443).
|
||||
dev-frontend:
|
||||
cd {{frontend}} && bun run dev
|
||||
|
||||
# ─── OpenAPI contract ────────────────────────────────────────────────────────
|
||||
|
||||
# Regenerate openapi.json from the backend and the TS client from it.
|
||||
gen-api:
|
||||
cd {{backend}} && cargo run --quiet -- --emit-openapi > {{frontend}}/openapi.json
|
||||
cd {{frontend}} && bun run gen:api
|
||||
|
||||
# Fail if the committed openapi.json drifts from the current Rust source.
|
||||
openapi-diff:
|
||||
cd {{backend}} && cargo run --quiet -- --emit-openapi > /tmp/smgw-fresh-openapi.json
|
||||
diff {{frontend}}/openapi.json /tmp/smgw-fresh-openapi.json \
|
||||
&& echo "openapi.json in sync" \
|
||||
|| ( echo "drift — run \`just gen-api\`" >&2 ; exit 1 )
|
||||
|
||||
# ─── Checks ──────────────────────────────────────────────────────────────────
|
||||
|
||||
# Run both side checks (cargo check + bun typecheck).
|
||||
check:
|
||||
cd {{backend}} && cargo check
|
||||
cd {{frontend}} && bun run typecheck
|
||||
|
||||
# Run both test suites.
|
||||
test:
|
||||
cd {{backend}} && cargo test
|
||||
cd {{frontend}} && bun run typecheck # placeholder — frontend tests TBD
|
||||
|
||||
# Format + lint (best-effort).
|
||||
fmt:
|
||||
cd {{backend}} && cargo fmt
|
||||
cd {{frontend}} && bun x prettier --write 'src/**/*.{ts,tsx,css}' 2>/dev/null || true
|
||||
Reference in New Issue
Block a user