generate-diagrams.sh - UML Diagram Generation
flowchart TD
Start([Start]) --> Check["Check prerequisites
Python + Graphviz/ImageMagick"]
Check --> CheckDot{dot command
available?}
CheckDot -->|no| CheckFallback{ImageMagick +
potrace available?}
CheckDot -->|yes| GenCompact["Generate compact UML
pyreverse -A -S -m y"]
GenCompact --> RenderDot1["Render DOT to SVG
dot -Tsvg"]
RenderDot1 --> CheckDot2{Detailed diagram?}
CheckFallback -->|yes| GenPNG["Generate PNG
pyreverse output"]
CheckFallback -->|no| ErrorFail["FAIL: No renderer
available"]
GenPNG --> ConvertPNG["Convert PNG to PNM
ImageMagick convert"]
ConvertPNG --> TracePNM["Trace PNM to SVG
potrace"]
TracePNM --> CheckDot2
GenCompact --> GenDetailed["Generate detailed UML
pyreverse -f ALL -A -S"]
CheckDot2 -->|yes| RenderDetailed
GenDetailed --> CheckDot3{dot command
available?}
CheckDot3 -->|yes| RenderDetailed["Render detailed DOT to SVG"]
CheckDot3 -->|no| DetailedFallback["Try PNG/potrace fallback"]
DetailedFallback --> CheckFallback2{ImageMagick +
potrace?}
CheckFallback2 -->|yes| ConvertDetailed["Convert to SVG"]
CheckFallback2 -->|no| DetailedFail["Skip detailed diagram"]
RenderDetailed --> GenPackages["Generate packages diagram
pyreverse -o dot"]
DetailedFail --> GenPackages
ConvertDetailed --> GenPackages
GenPackages --> CheckDot4{dot command
available?}
CheckDot4 -->|yes| RenderPackages["Render packages DOT to SVG"]
CheckDot4 -->|no| PackagesFallback["Try PNG/potrace fallback"]
RenderPackages --> Cleanup["Clean up intermediate files
*.dot, *.png, *.pnm"]
PackagesFallback --> Fallback2{ImageMagick +
potrace?}
Fallback2 -->|yes| ConvertPackages["Convert to SVG"]
Fallback2 -->|no| PackagesFail["Skip packages diagram"]
ConvertPackages --> Cleanup
PackagesFail --> Cleanup
Cleanup --> SaveOutput["Save SVGs to
docs/reference/diagrams/"]
SaveOutput --> Success([Diagrams generated])
ErrorFail --> Fail([Exit with error])
Success -.-> Fail
classDef action fill:#ecfeff,stroke:#06b6d4
classDef decision fill:#fef3c7,stroke:#f59e0b
classDef success fill:#d1fae5,stroke:#10b981
classDef error fill:#fee2e2,stroke:#ef4444
class GenCompact,RenderDot1,GenDetailed,RenderDetailed,GenPackages,RenderPackages,Cleanup,SaveOutput action
class Check,CheckDot,CheckFallback,CheckDot2,CheckDot3,CheckFallback2,CheckDot4,Fallback2 decision
class Success success
class ErrorFail,Fail,DetailedFail,PackagesFail error
Back to build scripts