Files
archlens/README.md
Gabriel Kaszewski 35f27d00b0
Some checks failed
CI / Check / Test (push) Failing after 1m24s
init: archlens — architecture diagram generator
Hex arch + DDD, tree-sitter parsing, Mermaid/ASCII output.
Supports Rust + Python. 92 tests. CI, diff, --check for staleness detection.
2026-06-16 16:13:04 +02:00

124 lines
2.7 KiB
Markdown

# archlens
Generate architecture diagrams from source code. Runs on CI to keep docs fresh.
Supports Rust and Python. Produces Mermaid or ASCII output.
## Install
```bash
cargo install --path crates/presentation
```
## Usage
```bash
# Module-level dependency graph (default)
archlens .
# Project-level (crate/package dependencies from manifests)
archlens . --level project
# Type-level class diagram
archlens . --level type
# Write to file
archlens . --output docs/architecture.mmd
# Split by module (one file per module + overview)
archlens . --level type --split-by-module --output docs/arch/
# ASCII output to terminal
archlens . --format ascii
# Scope to a subtree
archlens . --scope src/domain
# Exclude directories
archlens . --exclude tests/ --exclude generated/
# Verbose logging
archlens . -v # info
archlens . -vv # debug
```
## CI Integration
Check if committed diagrams are up to date:
```bash
archlens . --level project --check --output docs/architecture.mmd
```
Exit code 1 if the diagram has changed. Use `--strict` to also fail on parse warnings.
Compare current state against an existing file:
```bash
archlens diff docs/architecture.mmd --level project
```
## Config
Generate a config file:
```bash
archlens init
```
Creates `archlens.toml`:
```toml
[analysis]
exclude = ["tests/", "vendor/", "generated/"]
level = "module"
[modules]
# "src/infra" = "Infrastructure"
[output]
format = "mermaid"
# path = "docs/architecture.mmd"
split_by_module = false
```
## Diagram Levels
| Level | What it shows | Source |
|-------|--------------|--------|
| `project` | Crate/package dependencies | `Cargo.toml` |
| `module` | Module-level dependency graph | Imports + manifest deps |
| `type` | Class diagram with fields, methods, relationships | Source code (tree-sitter) |
## Supported Languages
| Language | Types | Inheritance | Composition | Imports |
|----------|-------|-------------|-------------|---------|
| Rust | struct, enum, trait | `impl Trait for Type` | struct fields | `use`, `mod` |
| Python | class | `class Foo(Bar)` | `__init__` params, type annotations | `import`, `from ... import` |
| C# | planned | - | - | - |
## Architecture
Built with hexagonal architecture (ports and adapters) + DDD.
```
crates/
domain/ # Core model, zero external deps
application/ # Use cases, orchestration
adapters/
tree-sitter/ # Source code parsing (Rust, Python)
cargo-workspace/ # Cargo.toml dependency extraction
walkdir/ # File discovery
mermaid/ # Mermaid diagram output
ascii/ # Terminal output
file-writer/ # Write to disk
stdout-writer/ # Write to stdout
toml-config/ # Config file parsing
presentation/ # CLI (clap), composition root
```
## License
MIT