diff --git a/build.rs b/build.rs index ea88d75..ea8b770 100644 --- a/build.rs +++ b/build.rs @@ -6,44 +6,26 @@ use std::path::Path; #[path = "src/cli.rs"] mod cli; +macro_rules! generate_manpage { + ($struct:ident) => { + let target_dir = env::var("CARGO_TARGET_DIR").unwrap_or("target".to_string()); + let output_dir = Path::new(&target_dir).join(env::var("PROFILE").unwrap()); + + let cmd = cli::$struct::command(); + let cmd_name = format!("{}.1", cmd.get_name()); + let man = Man::new(cmd); + let mut buffer: Vec = Default::default(); + man.render(&mut buffer)?; + std::fs::write(output_dir.join(cmd_name), buffer)?; + }; +} + fn main() -> std::io::Result<()> { - let target_dir = env::var("CARGO_TARGET_DIR").unwrap_or("target".to_string()); - let output_dir = Path::new(&target_dir).join(env::var("PROFILE").unwrap()); - - // git-mob docs - let cmd = cli::GitMob::command(); - let man = Man::new(cmd); - let mut buffer: Vec = Default::default(); - man.render(&mut buffer)?; - std::fs::write(output_dir.join("git-mob.1"), buffer)?; - - // git-solo docs - let cmd = cli::GitSolo::command(); - let man = Man::new(cmd); - let mut buffer: Vec = Default::default(); - man.render(&mut buffer)?; - std::fs::write(output_dir.join("git-solo.1"), buffer)?; - - // git-add-coauthor docs - let cmd = cli::GitAddCoauthor::command(); - let man = Man::new(cmd); - let mut buffer: Vec = Default::default(); - man.render(&mut buffer)?; - std::fs::write(output_dir.join("git-add-coauthor.1"), buffer)?; - - // git-edit-coauthor docs - let cmd = cli::GitEditCoauthor::command(); - let man = Man::new(cmd); - let mut buffer: Vec = Default::default(); - man.render(&mut buffer)?; - std::fs::write(output_dir.join("git-edit-coauthor.1"), buffer)?; - - // git-delete-coauthor docs - let cmd = cli::GitDeleteCoauthor::command(); - let man = Man::new(cmd); - let mut buffer: Vec = Default::default(); - man.render(&mut buffer)?; - std::fs::write(output_dir.join("git-delete-coauthor.1"), buffer)?; + generate_manpage!(GitMob); + generate_manpage!(GitSolo); + generate_manpage!(GitAddCoauthor); + generate_manpage!(GitEditCoauthor); + generate_manpage!(GitDeleteCoauthor); Ok(()) }