Crate helptext

source ·
Expand description

A crate to print beautiful help messages.

use helptext::{Help, sections};

const HELP: Help = Help(sections!(
    ["my-cool-program " {env!("CARGO_PKG_VERSION")}]
    ["Use " c:"-h" " for short descriptions and " c:"--help" " for more details."]
    []
    "USAGE" {
        ["my-cool-program [OPTIONS] <INPUT>"]
    }
    "OPTIONS" {
        table Auto {
            "-h, --help" => {
                ["Print help information"]
                Long ["Use " c:"-h" " for short descriptions and " c:"--help" " for more details."]
            }
            "-p, --path <FILE>" => {
                ["File containing the pomsky expression to compile"]
            }
            "-V, --version" => {
                ["Print version information"]
            }
            "-W, --warnings <DIAGNOSTICS>" => {
                Short ["Disable certain warnings (disable all with " c:"-W0" ")"]
                Long ["Disable some or all warnings. A single warning can be disabled by specifying
the name followed by " c:"=0" ", for example:

    " c!"-Wcompat=0" "

Multiple warnings can be disabled by setting this option multiple times, or
using a comma-separated list:

    " c!"-Wcompat=0 -Wdeprecated=0
    -Wcompat=0,deprecated=0" "

To disable all warnings, use " c:"-W0" ".

Currently, the following warnings can be disabled:"]
                Long table Compact {
                    "compat"     => { ["Compatibility warnings"] }
                    "deprecated" => { ["A used feature will be removed in the future"] }
                }
            }
        }
    }
));

fn print_short_help(use_colors: bool) {
    HELP.write(
        &mut std::io::stdout().lock(),
        false,  // don't show long help
        use_colors,
    );
}

fn print_long_help(use_colors: bool) {
    HELP.write(
        &mut std::io::stdout().lock(),
        true,  // show long help
        use_colors,
    );
}

Result:

Short help

Long help

Macros

  • Macro to declare a list of help sections. This can be passed to Help to print it.
  • Macro to declare a list of text segments. A segment can be written as

Structs

Enums