use std::{env, fs::File, io::Error, path::Path}; use clap::{CommandFactory, ValueEnum}; use clap_complete::generate_to; use clap_mangen::Man; include!("src/cli.rs"); fn build_shell_completion(outdir: &Path) -> Result<(), Error> { let mut app = Cli::command(); let shells = Shell::value_variants(); for shell in shells { generate_to(*shell, &mut app, "dev-serve", outdir)?; } Ok(()) } fn build_manpages(outdir: &Path) -> Result<(), Error> { let app = Cli::command(); let file = outdir.join("dev-serve.1"); let mut file = File::create(file)?; Man::new(app).render(&mut file)?; Ok(()) } fn main() -> Result<(), Box> { let outdir = match env::var_os("OUT_DIR") { None => return Ok(()), Some(outdir) => outdir, }; let out_path = PathBuf::from(outdir); let mut path = out_path.ancestors().nth(4).unwrap().to_owned(); path.push("assets"); std::fs::create_dir_all(&path).unwrap(); build_shell_completion(&path)?; build_manpages(&path)?; Ok(()) }