# capibaraengineer/module-dependency-handler architecture

> Architecture diagram of the GitHub repository capibaraengineer/module-dependency-handler, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-09-25). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/capibaraengineer/module-dependency-handler
- Repository: https://github.com/capibaraengineer/module-dependency-handler

## Overview

ModuleDependencyHandler is a CLI for discovering C++ module interface files, resolving module and partition imports, ordering modules by dependency level, and invoking Clang to precompile them. The primary workflow runs from CLI arguments through scanning, representation and dependency analysis, graph construction, and compilation. The graph also distinguishes parsing from representation building. The README describes configurable extensions, but the sampled runtime scans only `.cppm`; the `-file-types` argument is not implemented. Clang command construction is described as temporary in the source.

Main entry points: [`ModuleDependencyHandler/source/main.cpp`](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/main.cpp) (Application flow), [`ModuleDependencyHandler/source/moduleRepresentation.cpp`](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/moduleRepresentation.cpp) (Module representations), [`ModuleDependencyHandler/source/cliArgHandler.cpp`](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/cliArgHandler.cpp) (Argument handling), [`ModuleDependencyHandler/source/preCompile.cpp`](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/preCompile.cpp) (Clang precompile)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_cli["CLI and discovery"]
  node_main["Application flow<br/>[main.cpp]"]
  node_args["Argument handling<br/>[cliArgHandler.cpp]"]
  node_scanner["File discovery<br/>[main.cpp]"]
end

subgraph group_analysis["Module analysis"]
  node_representations["Module representations"]
  node_parsing["Import/export parsing<br/>[parsing.cpp]"]
end

subgraph group_ordering["Dependency ordering"]
  node_graph["Dependency levels"]
end

subgraph group_compile["Precompilation"]
  node_compiler["Clang precompile<br/>[preCompile.cpp]"]
end

node_user(("CLI user"))
node_sourcefiles["Module source files"]
node_clang["Clang executable"]
node_outputs["PCM output files"]

node_user -->|"runs"| node_main
node_main -->|"parses arguments"| node_args
node_args -->|"returns paths"| node_main
node_main -->|"scans path"| node_scanner
node_scanner -->|"finds &#96;.cppm&#96;"| node_sourcefiles
node_main -->|"builds representations"| node_representations
node_representations -->|"checks declarations and imports"| node_parsing
node_representations -->|"reads files"| node_sourcefiles
node_main -->|"builds dependency levels"| node_graph
node_main -->|"passes ordered modules"| node_compiler
node_compiler -->|"executes command"| node_clang
node_clang -->|"writes PCM files"| node_outputs

click node_main "https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/main.cpp"
click node_args "https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/cliArgHandler.cpp"
click node_scanner "https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/main.cpp"
click node_representations "https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/moduleRepresentation.cpp"
click node_parsing "https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/parsing.cpp"
click node_graph "https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/moduleDependencyGraph.cpp"
click node_compiler "https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/preCompile.cpp"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_main,node_args,node_scanner,node_user toneBlue
class node_representations,node_parsing toneAmber
class node_graph toneMint
class node_compiler toneRose
class node_sourcefiles,node_clang,node_outputs toneIndigo
```

## Components

### CLI and discovery

- [Application flow](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/main.cpp): `ModuleDependencyHandler/source/main.cpp`
- [Argument handling](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/cliArgHandler.cpp): `ModuleDependencyHandler/source/cliArgHandler.cpp`
- [File discovery](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/main.cpp): `ModuleDependencyHandler/source/main.cpp`

### Module analysis

- [Module representations](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/moduleRepresentation.cpp): `ModuleDependencyHandler/source/moduleRepresentation.cpp`
- [Import/export parsing](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/parsing.cpp): `ModuleDependencyHandler/source/parsing.cpp`

### Dependency ordering

- [Dependency levels](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/moduleDependencyGraph.cpp): `ModuleDependencyHandler/source/moduleDependencyGraph.cpp`

### Precompilation

- [Clang precompile](https://github.com/capibaraengineer/module-dependency-handler/blob/main/ModuleDependencyHandler/source/preCompile.cpp): `ModuleDependencyHandler/source/preCompile.cpp`

### Other components

- **CLI user**
- **Module source files**
- **Clang executable**
- **PCM output files**

## Connections

- CLI user → Application flow: runs
- Application flow → Argument handling: parses arguments
- Argument handling → Application flow: returns paths
- Application flow → File discovery: scans path
- File discovery → Module source files: finds `.cppm`
- Application flow → Module representations: builds representations
- Module representations → Import/export parsing: checks declarations and imports
- Module representations → Module source files: reads files
- Application flow → Dependency levels: builds dependency levels
- Application flow → Clang precompile: passes ordered modules
- Clang precompile → Clang executable: executes command
- Clang executable → PCM output files: writes PCM files
