Skip to main content

Crate clapdown

Crate clapdown 

Source
Expand description

Generate well-structured Markdown documentation from a clap CLI.

clapdown walks a clap::Command and renders it to Markdown whose heading outline tracks command nesting without ever skipping a level: the root command is a top-level heading, each subcommand descends one level, and a command’s Arguments/Options sections sit one level below the command. Arguments render as definition lists, or as bullet lists with Flavor::CommonMark.

§Example

use clap::Command;

let cmd = Command::new("greet")
    .about("Greet someone")
    .arg(clap::Arg::new("name").help("Who to greet"));

let markdown = clapdown::render(&cmd, &clapdown::Options::new());
assert!(markdown.contains("# `greet`"));

Use render_from to go straight from a derived CLI type:

use clap::Parser;

#[derive(Parser)]
#[command(name = "greet", about = "Greet someone")]
struct Cli {
    /// Who to greet
    name: String,
}

let markdown = clapdown::render_from::<Cli>(&clapdown::Options::new());
assert!(markdown.contains("# `greet`"));

Structs§

Options
Options controlling how a clap::Command is rendered to Markdown.

Enums§

Flavor
The Markdown flavor to target.
MetadataStyle
How a custom Pandoc metadata value is written to YAML.

Functions§

render
Render cmd to a Markdown string using opts.
render_from
Render the CLI defined by C to a Markdown string using opts.