Skip to main content

clap_integration/
clap_integration.rs

1use std::env;
2
3use clap::Parser;
4use shellcomp::{InstallRequest, install, render_clap_completion};
5
6#[derive(Parser)]
7struct Cli {
8    #[arg(long)]
9    verbose: bool,
10}
11
12fn main() -> Result<(), Box<dyn std::error::Error>> {
13    let generator_shell = shellcomp::clap_complete::Shell::Bash;
14    let script = render_clap_completion::<Cli>(generator_shell, "example-cli")?;
15    let demo_path = env::temp_dir().join(format!("example-cli-{}.bash", std::process::id()));
16    let report = install(InstallRequest {
17        shell: generator_shell.into(),
18        program_name: "example-cli",
19        script: &script,
20        path_override: Some(demo_path.clone()),
21    })?;
22
23    println!("Rendered completion from clap and installed it to a temporary path.");
24    println!("Path: {}", demo_path.display());
25    println!("{report:#?}");
26    Ok(())
27}