init: archlens — architecture diagram generator
Some checks failed
CI / Check / Test (push) Failing after 1m24s
Some checks failed
CI / Check / Test (push) Failing after 1m24s
Hex arch + DDD, tree-sitter parsing, Mermaid/ASCII output. Supports Rust + Python. 92 tests. CI, diff, --check for staleness detection.
This commit is contained in:
123
README.md
Normal file
123
README.md
Normal file
@@ -0,0 +1,123 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user