diff options
Diffstat (limited to 'examples/dynamic.rs')
-rw-r--r-- | examples/dynamic.rs | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/examples/dynamic.rs b/examples/dynamic.rs new file mode 100644 index 0000000..ccaf7d8 --- /dev/null +++ b/examples/dynamic.rs @@ -0,0 +1,37 @@ +use clap::FromArgMatches; +use clap::Subcommand; + +fn command() -> clap::Command { + let cmd = clap::Command::new("dynamic") + .arg( + clap::Arg::new("input") + .long("input") + .short('i') + .value_hint(clap::ValueHint::FilePath), + ) + .arg( + clap::Arg::new("format") + .long("format") + .short('F') + .value_parser(["json", "yaml", "toml"]), + ) + .args_conflicts_with_subcommands(true); + clap_complete::dynamic::shells::CompleteCommand::augment_subcommands(cmd) +} + +fn main() { + let cmd = command(); + let matches = cmd.get_matches(); + if let Ok(completions) = + clap_complete::dynamic::shells::CompleteCommand::from_arg_matches(&matches) + { + completions.complete(&mut command()); + } else { + println!("{matches:#?}"); + } +} + +#[test] +fn verify_cli() { + command().debug_assert(); +} |