A better Rust ATProto crate
0

Configure Feed

Select the types of activity you want to include in your feed.

at main 1.4 kB View raw
1use clap::CommandFactory; 2use clap_complete::{generate_to, shells}; 3use clap_mangen::Man; 4use std::env; 5use std::fs; 6use std::io::Result; 7use std::path::PathBuf; 8 9#[path = "src/cli.rs"] 10mod cli; 11 12fn main() -> Result<()> { 13 let out_dir = PathBuf::from(env::var("OUT_DIR").expect("OUT_DIR not set")); 14 15 // Generate docs for lex-fetch 16 generate_docs_for_binary(&out_dir, cli::LexFetchArgs::command(), "lex-fetch")?; 17 18 // Generate docs for jacquard-codegen 19 generate_docs_for_binary(&out_dir, cli::CodegenArgs::command(), "jacquard-codegen")?; 20 21 println!( 22 "cargo:warning=Generated man pages and completions to {:?}", 23 out_dir 24 ); 25 26 Ok(()) 27} 28 29fn generate_docs_for_binary( 30 out_dir: &PathBuf, 31 mut cmd: clap::Command, 32 bin_name: &str, 33) -> Result<()> { 34 // Generate man page 35 let man_dir = out_dir.join("man"); 36 fs::create_dir_all(&man_dir)?; 37 38 let man = Man::new(cmd.clone()); 39 let mut man_buffer = Vec::new(); 40 man.render(&mut man_buffer)?; 41 fs::write(man_dir.join(format!("{}.1", bin_name)), man_buffer)?; 42 43 // Generate shell completions 44 let comp_dir = out_dir.join("completions"); 45 fs::create_dir_all(&comp_dir)?; 46 47 generate_to(shells::Bash, &mut cmd, bin_name, &comp_dir)?; 48 generate_to(shells::Fish, &mut cmd, bin_name, &comp_dir)?; 49 generate_to(shells::Zsh, &mut cmd, bin_name, &comp_dir)?; 50 51 Ok(()) 52}