clap_autodoc

Crates.ioclap_autodoc
lib.rsclap_autodoc
version0.2.1
created_at2025-08-13 19:58:47.236153+00
updated_at2025-09-17 20:00:27.185453+00
descriptionAuto-generate markdown documentation tables from clap configuration structs
homepagehttps://github.com/videobitva/clap_autodoc
repositoryhttps://github.com/videobitva/clap_autodoc
max_upload_size
id1794020
size67,902
Vadim Gromovoy (videobitva)

documentation

README

clap_autodoc

Auto-generate markdown documentation tables from clap configuration structs.

Quick Start

[dependencies]
clap_autodoc = "0.2.0"
clap = { version = "4.0", features = ["derive"] }

Basic Usage

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

Nested Structs (Grouped Format)

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:

DatabaseConfig Configuration

Field Name Type Required Default Details
host String Yes - Database host

AppConfig Configuration

Field Name Type Required Default Details
port u16 No 8080 -

How It Works

  1. Add [//]: # (CONFIG_DOCS_START) and [//]: # (CONFIG_DOCS_END) markers to your markdown file
  2. The macro generates tables between these markers during compilation
  3. Supports flat (single table) and grouped (separate sections) formats

Options

  • target: Path to markdown file (required)
  • format: "flat" (default) or "grouped"

License

MIT OR Apache-2.0

Commit count: 3

cargo fmt