use clap::{CommandFactory, ValueEnum};
use clap_complete::{generate_to, Shell};
use std::env;
include!("src/cli.rs");
fn build_man_page() -> Result<(), Box<dyn std::error::Error>> {
let out_dir = env::var("OUT_DIR")?;
let out_dir = PathBuf::from(out_dir);
let cmd = Cli::command();
let man = clap_mangen::Man::new(cmd);
let mut buffer: Vec<u8> = Default::default();
man.render(&mut buffer)?;
let file_path = out_dir.join("git-tree.1");
std::fs::write(&file_path, buffer)?;
eprintln!("map page generated in {file_path:?}");
Ok(())
}
fn build_completions() -> Result<(), Box<dyn std::error::Error>> {
let out_dir = env::var("OUT_DIR")?;
let out_dir = std::path::Path::new(&out_dir).join("completions/");
if !out_dir.exists() {
std::fs::create_dir(out_dir.clone()).expect("Failed to create 'completions' directory.");
}
let mut cmd = Cli::command();
for &shell in Shell::value_variants() {
generate_to(shell, &mut cmd, "git-tree", out_dir.clone())?;
}
Ok(())
}
fn main() -> Result<(), Box<dyn std::error::Error>> {
build_man_page()?;
build_completions()?;
vergen::EmitBuilder::builder()
.all_build()
.all_git()
.emit()?;
Ok(())
}