#!/usr/bin/env bash # Regenerate the architecture dependency graph (WP-38, updated WP-67) as mermaid diagrams # embedded in a markdown file, so it renders on the git host and can be linked from the docs. # One diagram per app (ssp, behandelportal) plus the shared libraries — each app is cruised # separately since a single tsconfig can't resolve both apps' `@auth/*` alias at once (see # .dependency-cruiser.base.js). Boundaries are enforced separately by `npm run dep:check`. # Run this after a structural change; commit the result. set -euo pipefail cd "$(dirname "$0")/.." OUT=docs/reference/architecture/dependency-graph.md graph() { local app="$1" root="$2" npx depcruise "$root" libs \ --config ".dependency-cruiser.${app}.js" \ --collapse "^(apps/[^/]+/src/app|libs/[^/]+/src)/[^/]+" \ --output-type mermaid } { echo "# Dependency graph" echo echo "_Generated by \`npm run dep:graph\` — do not edit by hand._ Nodes are context × atomic" echo "layer (\`apps//src/app//\` or \`libs//src/\`); edges are" echo "real imports. The allowed edges are enforced by \`npm run dep:check\` (dependency-cruiser," echo "one config per app — see [dependencies.md](./dependencies.md))." echo echo "## ssp" echo echo '```mermaid' graph ssp apps/ssp/src echo '```' echo echo "## behandelportal" echo echo '```mermaid' graph behandelportal apps/behandelportal/src echo '```' } >"$OUT" echo "wrote $OUT"