Skip to content

Commit 58e4296

Browse files
committed
feat: Add Rust documentation generation with dedicated parser and generator scripts, and integrate it into the CLI.
1 parent 09b5bc0 commit 58e4296

File tree

7 files changed

+1371
-75
lines changed

7 files changed

+1371
-75
lines changed

praisonai_tools/docs_generator/README.md

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,31 @@ pip install praisonai-tools
1010

1111
## Quick Start
1212

13+
### Generate Rust SDK Documentation (Standalone)
14+
15+
The Rust documentation generator works without dependencies:
16+
17+
```bash
18+
# Direct execution (recommended for Rust)
19+
cd praisonai_tools/docs_generator
20+
python3 __main__.py --package rust
21+
22+
# Or use the standalone script
23+
python3 generate_rust_docs.py --rust-path /path/to/praisonai-rust
24+
25+
# Dry run
26+
python3 __main__.py --package rust --dry-run
27+
```
28+
29+
### Generate All SDK Documentation
30+
31+
For Python/TypeScript docs, install the full package first:
32+
33+
```bash
34+
pip install praisonaiagents
35+
python -m praisonai_tools.docs_generator --package all
36+
```
37+
1338
### Using CLI
1439

1540
```bash
@@ -23,16 +48,6 @@ praisonai-tools docs-generate --layout granular
2348
praisonai-tools docs-generate --output /path/to/docs
2449
```
2550

26-
### Using Python Module
27-
28-
```bash
29-
# Run as module
30-
python -m praisonai_tools.docs_generator
31-
32-
# With options
33-
python -m praisonai_tools.docs_generator --layout granular
34-
```
35-
3651
### Direct Script Execution
3752

3853
```bash
@@ -44,7 +59,9 @@ python generator.py --layout granular
4459
| Option | Description | Default |
4560
|--------|-------------|---------|
4661
| `--layout` | Documentation layout: `compact` or `granular` | `granular` |
47-
| `--output` | Output directory path | Auto-detected |
62+
| `--package` | Package to generate: `praisonaiagents`, `praisonai`, `typescript`, `rust`, `all` | `all` |
63+
| `--docs-root` | Root directory of the documentation repository | Auto-detected |
64+
| `--dry-run` | Show what would be generated without writing files | `false` |
4865

4966
## Layouts
5067

@@ -64,12 +81,14 @@ python generator.py --layout granular
6481
- **MDX output**: Mintlify-compatible MDX format
6582
- **Navigation generation**: Auto-updates `docs.json` navigation
6683
- **Icon support**: Maps modules to Font Awesome icons
84+
- **Multi-language support**: Python, TypeScript, and Rust
6785

6886
## Supported Packages
6987

7088
- `praisonaiagents` (Python Core SDK)
7189
- `praisonai` (Python Wrapper)
7290
- TypeScript SDK (`praisonai-ts`)
91+
- **Rust SDK** (`praisonai-rust`) - Agent, Tools, Workflows, Memory, LLM
7392

7493
## Output Structure
7594

@@ -81,6 +100,10 @@ docs/sdk/reference/
81100
│ └── functions/ # Function pages
82101
├── praisonai/
83102
│ └── ...
84-
└── typescript/
85-
└── ...
103+
├── typescript/
104+
│ └── ...
105+
└── rust/
106+
├── modules/ # praisonai.agent, praisonai.tools, etc.
107+
├── classes/ # Agent, ToolRegistry, AgentTeam, etc.
108+
└── functions/ # Standalone functions
86109
```
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
"""
2+
PraisonAI Documentation Generator.
3+
4+
This module can be run standalone without requiring the praisonaiagents dependency.
5+
6+
Usage:
7+
python -m praisonai_tools.docs_generator --package rust
8+
python -m praisonai_tools.docs_generator --package all
9+
"""
10+
11+
# This file is intentionally minimal to allow standalone execution
12+
# without importing the parent package dependencies.
13+
14+
__version__ = "0.1.0"

praisonai_tools/docs_generator/__main__.py

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,60 @@
11
"""
22
CLI entry point for praisonai_tools.docs_generator.
3+
4+
This can be run in two ways:
5+
1. Directly: cd praisonai_tools/docs_generator && python __main__.py --package rust
6+
2. As module (requires praisonaiagents): python -m praisonai_tools.docs_generator --package rust
37
"""
48

59
import argparse
610
import sys
7-
from .generator import ReferenceDocsGenerator
11+
import os
812

913
def main():
1014
parser = argparse.ArgumentParser(description="PraisonAI SDK Documentation Generator")
11-
parser.add_argument("--package", choices=["praisonaiagents", "praisonai", "typescript", "all"],
15+
parser.add_argument("--package", choices=["praisonaiagents", "praisonai", "typescript", "rust", "all"],
1216
default="all", help="Package to generate docs for")
1317
parser.add_argument("--dry-run", action="store_true", help="Don't write files")
1418
parser.add_argument("--docs-root", default="/Users/praison/PraisonAIDocs",
1519
help="Root directory of the documentation repository")
20+
parser.add_argument("--layout", choices=["legacy", "granular"], default="granular",
21+
help="Documentation layout type")
22+
parser.add_argument("--rust-path", default="/Users/praison/praisonai-package/src/praisonai-rust",
23+
help="Path to Rust SDK workspace")
1624

1725
args = parser.parse_args()
1826

19-
generator = ReferenceDocsGenerator(docs_root=args.docs_root)
27+
# For Rust-only generation, use the standalone script to avoid praisonaiagents dependency
28+
if args.package == "rust":
29+
# Use the standalone Rust generator
30+
from pathlib import Path
31+
script_dir = Path(__file__).parent
32+
sys.path.insert(0, str(script_dir))
33+
34+
from generate_rust_docs import main as rust_main
35+
# Patch sys.argv for the rust script
36+
sys.argv = [
37+
'generate_rust_docs.py',
38+
'--rust-path', args.rust_path,
39+
'--docs-root', args.docs_root,
40+
]
41+
if args.dry_run:
42+
sys.argv.append('--dry-run')
43+
rust_main()
44+
return 0
45+
46+
# For other packages, use the full generator (requires praisonaiagents)
47+
try:
48+
from .generator import ReferenceDocsGenerator, LayoutType
49+
except ImportError as e:
50+
print(f"Error: {e}")
51+
print("\nFor generating Python/TypeScript docs, install praisonaiagents:")
52+
print(" pip install praisonaiagents")
53+
print("\nFor Rust docs only, use: --package rust")
54+
return 1
55+
56+
layout = LayoutType.LEGACY if args.layout == "legacy" else LayoutType.GRANULAR
57+
generator = ReferenceDocsGenerator(docs_root=args.docs_root, layout=layout)
2058

2159
if args.package == "all":
2260
generator.generate_all(dry_run=args.dry_run)

0 commit comments

Comments
 (0)