Spec generation for clap-rs/clap
```rust use carapacespecclap::Spec; use clap::{Arg, ArgAction, Command, ValueHint}; use clap_complete::generate; use std::io;
fn main() { let mut cmd = Command::new("example") .aliases(["alias1", "alias2"]) .about("example command") .arg( Arg::new("help") .long("help") .short('h') .help("show help") .action(ArgAction::SetTrue), ) .arg( Arg::new("optional") .long("optional") .help("optional argument") .requireequals(true) .valuehint(ValueHint::Username), ) .arg( Arg::new("value") .short('v') .help("takes argument") .valueparser(["one", "two", "three"]), ) .subcommand( Command::new("subcommand") .about("example subcommand") .arg( Arg::new("command") .long("command") .short('c') .help("execute command") .valuehint(ValueHint::CommandName), ) .arg( Arg::new("pos1") .valueparser(["four", "five", "six"]) .valuehint(ValueHint::DirPath), ) .arg( Arg::new("posAny") .numargs(1..) .valuehint(ValueHint::Hostname), ), );
generate(Spec, &mut cmd, "example", &mut io::stdout());
} ```
yaml
name: example
aliases:
- alias1
- alias2
description: example command
flags:
-h, --help: show help
--optional?: optional argument
-v=: takes argument
completion:
flag:
optional:
- $_os.Users
v:
- one
- two
- three
commands:
- name: subcommand
description: example subcommand
flags:
-c, --command=: execute command
completion:
flag:
command:
- $_os.PathExecutables
- $files
positional:
- - $directories
- four
- five
- six
positionalany:
- $_net.Hosts