2025-11-12 08:17:28 -08:00
|
|
|
#!/usr/bin/env node
|
|
|
|
|
/**
|
|
|
|
|
* Export Mermaid architecture diagram to PNG/SVG.
|
|
|
|
|
* Requires: @mermaid-js/mermaid-cli (mmdc)
|
|
|
|
|
* Usage:
|
|
|
|
|
* node scripts/export-architecture.mjs --format png
|
|
|
|
|
* node scripts/export-architecture.mjs --format svg
|
|
|
|
|
*/
|
|
|
|
|
import { execSync } from 'child_process'
|
|
|
|
|
import { existsSync } from 'fs'
|
|
|
|
|
import { join } from 'path'
|
|
|
|
|
|
|
|
|
|
const args = process.argv.slice(2)
|
|
|
|
|
const formatArg = args.find(a => a.startsWith('--format=')) || '--format=png'
|
|
|
|
|
const format = formatArg.split('=')[1]
|
|
|
|
|
const diagram = join(process.cwd(), 'docs', 'ArchitectureDiagram.mmd')
|
|
|
|
|
const outFile = join(process.cwd(), 'docs', `ArchitectureDiagram.${format}`)
|
|
|
|
|
|
|
|
|
|
if (!existsSync(diagram)) {
|
|
|
|
|
console.error('Diagram source not found:', diagram)
|
|
|
|
|
process.exit(1)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
execSync(`npx mmdc -i "${diagram}" -o "${outFile}"`, { stdio: 'inherit' })
|
|
|
|
|
console.log(`Exported diagram to ${outFile}`)
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.error('Mermaid export failed. Ensure @mermaid-js/mermaid-cli is installed.')
|
|
|
|
|
process.exit(1)
|
2025-11-11 09:07:28 -08:00
|
|
|
}
|