| Crates.io | clap_autodoc |
| lib.rs | clap_autodoc |
| version | 0.2.1 |
| created_at | 2025-08-13 19:58:47.236153+00 |
| updated_at | 2025-09-17 20:00:27.185453+00 |
| description | Auto-generate markdown documentation tables from clap configuration structs |
| homepage | https://github.com/videobitva/clap_autodoc |
| repository | https://github.com/videobitva/clap_autodoc |
| max_upload_size | |
| id | 1794020 |
| size | 67,902 |
Auto-generate markdown documentation tables from clap configuration structs.
[dependencies]
clap_autodoc = "0.2.0"
clap = { version = "4.0", features = ["derive"] }
use clap_autodoc::generate;
use clap::Parser;
#[derive(Parser)]
#[clap(rename_all = "kebab-case")]
#[generate(target = "README.md")]
pub struct Config {
/// Database host
#[clap(env = "DATABASE_HOST", long)]
pub database_host: String,
/// Database port
#[clap(env = "DATABASE_PORT", long, default_value_t = 5432)]
pub database_port: u16,
}
Generated output:
| Field Name | Type | Required | Default | Details | Group |
|---|---|---|---|---|---|
| database-host | String | Yes | - | Database host | Config |
| database-port | u16 | No | 5432 | Database port | Config |
use clap_autodoc::{generate, register};
use clap::Parser;
#[derive(Parser)]
#[generate(target = "CONFIG.md", format = "grouped")]
pub struct AppConfig {
#[clap(flatten)]
pub database: DatabaseConfig,
#[clap(long, default_value_t = 8080)]
pub port: u16,
}
#[derive(Parser)]
#[register] // Required for nested structs
pub struct DatabaseConfig {
/// Database host
#[clap(long)]
pub host: String,
}
Generated output:
| Field Name | Type | Required | Default | Details |
|---|---|---|---|---|
| host | String | Yes | - | Database host |
| Field Name | Type | Required | Default | Details |
|---|---|---|---|---|
| port | u16 | No | 8080 | - |
[//]: # (CONFIG_DOCS_START) and [//]: # (CONFIG_DOCS_END) markers to your markdown filetarget: Path to markdown file (required)format: "flat" (default) or "grouped"MIT OR Apache-2.0