Shell completions

This commit is contained in:
Nox Sluijtman 2025-07-02 23:07:43 +02:00
parent c21072727c
commit 49f7746f57
Signed by: Egg
SSH key fingerprint: SHA256:2sG9X3C7Xvq2svGumz1/k7cm8l4G9+qAtAeugqB4J9M
6 changed files with 219 additions and 86 deletions

39
build.rs Normal file
View file

@ -0,0 +1,39 @@
use clap::{Command, CommandFactory};
// use clap_complete as complete;
use clap_mangen as mangen;
// use complete::Shell;
use std::{path::PathBuf, str::FromStr};
#[path = "src/cli.rs"]
mod cli;
use cli::*;
fn generate_manpage(cmd: Command, out_dir: PathBuf) -> std::io::Result<()> {
let _path = mangen::generate_to(cmd, &out_dir)?;
println!("cargo:warning=manpage is generated: {out_dir:?}");
Ok(())
}
// fn generate_completions(cmd: &mut Command, out_dir: PathBuf) -> std::io::Result<()> {
// let path = complete::generate_to(Shell::Zsh, cmd, "noise", out_dir)?;
// println!("cargo:warning=completion file is generated: {path:?}");
// Ok(())
// }
fn main() -> std::io::Result<()> {
let out_dir =
std::path::PathBuf::from(std::env::var_os("OUT_DIR").ok_or(std::io::ErrorKind::NotFound)?);
// let out_dir = PathBuf::from_str("./").unwrap();
let cmd = Cli::command();
generate_manpage(cmd, out_dir.clone())?;
// eprintln!("{out_dir:?}");
// println!("cargo:warning=out_dir: {out_dir:?}");
Ok(())
}