use std::io;
use std::path::{Path, PathBuf};
use clap::{Command, CommandFactory};
use clap_mangen::Man;
use upskill::cli::Cli;
fn main() -> io::Result<()> {
let out_dir = PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("target/man");
std::fs::create_dir_all(&out_dir)?;
let root = Cli::command();
let written = render_recursive(&root, "upskill", &out_dir)?;
println!("wrote {written} man page(s) to {}", out_dir.display());
Ok(())
}
fn render_recursive(cmd: &Command, name: &str, out_dir: &Path) -> io::Result<usize> {
let mut buffer = Vec::new();
Man::new(cmd.clone())
.title(name.to_uppercase())
.render(&mut buffer)?;
std::fs::write(out_dir.join(format!("{name}.1")), buffer)?;
let mut count = 1;
for sub in cmd.get_subcommands() {
let sub_name = format!("{name}-{}", sub.get_name());
count += render_recursive(sub, &sub_name, out_dir)?;
}
Ok(count)
}