use clap::CommandFactory;
use clap_mangen::Man;
use sql_splitter::cmd::Cli;
use std::fs;
use std::io::Result;
use std::path::Path;
fn main() -> Result<()> {
let man_dir = Path::new("man");
fs::create_dir_all(man_dir)?;
let cmd = Cli::command();
let man = Man::new(cmd.clone());
let mut buffer = Vec::new();
man.render(&mut buffer)?;
fs::write(man_dir.join("sql-splitter.1"), buffer)?;
println!("Generated: man/sql-splitter.1");
for subcommand in cmd.get_subcommands() {
let name = subcommand.get_name();
if name == "help" {
continue;
}
let mut sub = subcommand.clone();
let page_title: &'static str = Box::leak(format!("sql-splitter-{}", name).into_boxed_str());
sub = sub.name(page_title);
let bin_name = format!("sql-splitter {}", name);
sub = sub.bin_name(bin_name);
let man = Man::new(sub);
let mut buffer = Vec::new();
man.render(&mut buffer)?;
let filename = format!("sql-splitter-{}.1", name);
fs::write(man_dir.join(&filename), buffer)?;
println!("Generated: man/{}", filename);
}
println!("\nMan pages generated in man/ directory.");
println!("View with: man ./man/sql-splitter.1");
println!("Install with: sudo cp man/*.1 /usr/local/share/man/man1/");
Ok(())
}