use clap::Parser; #[derive(Parser)] // requires `derive` feature #[command(name = "cargo")] #[command(bin_name = "cargo")] #[command(styles = CLAP_STYLING)] enum CargoCli { ExampleDerive(ExampleDeriveArgs), } // See also `clap_cargo::style::CLAP_STYLING` pub const CLAP_STYLING: clap::builder::styling::Styles = clap::builder::styling::Styles::styled() .header(clap_cargo::style::HEADER) .usage(clap_cargo::style::USAGE) .literal(clap_cargo::style::LITERAL) .placeholder(clap_cargo::style::PLACEHOLDER) .error(clap_cargo::style::ERROR) .valid(clap_cargo::style::VALID) .invalid(clap_cargo::style::INVALID); #[derive(clap::Args)] #[command(version, about, long_about = None)] struct ExampleDeriveArgs { #[arg(long)] manifest_path: Option, } fn main() { let CargoCli::ExampleDerive(args) = CargoCli::parse(); println!("{:?}", args.manifest_path); }