#[cfg(feature = "cli")]
use clap::CommandFactory;
#[cfg(feature = "cli")]
use clap_complete::{generate_to, shells::Shell};
#[cfg(feature = "cli")]
use path_absolutize::*;
#[cfg(feature = "cli")]
#[path = "src/cli.rs"]
mod cli;
#[cfg(feature = "cli")]
#[path = "src/page.rs"]
pub mod page;
fn main() -> std::io::Result<()> {
#[cfg(feature = "cli")]
{
let out_dir = std::path::PathBuf::from(
std::env::var_os("OUT_DIR").ok_or(std::io::ErrorKind::NotFound)?,
);
let mut cmd = cli::Args::command();
let man = clap_mangen::Man::new(cmd.clone());
let mut buffer: Vec<u8> = Default::default();
man.render(&mut buffer)?;
let man_dir = &out_dir.join("../../../man");
let absolute_man_dir = man_dir.absolutize()?;
std::fs::create_dir_all(&absolute_man_dir)?;
let man_path = absolute_man_dir.join("paper-age.1");
std::fs::write(man_path, buffer)?;
let completion_dir = out_dir.join("../../../completion");
let absolute_completion_dir = completion_dir.absolutize()?;
std::fs::create_dir_all(absolute_completion_dir.clone())?;
for shell in [Shell::Bash, Shell::Fish, Shell::Zsh] {
generate_to(
shell,
&mut cmd,
"paper-age",
absolute_completion_dir.as_ref(),
)?;
}
println!("cargo:rerun-if-changed=src/cli.rs");
println!("cargo:rerun-if-changed=src/page.rs");
}
Ok(())
}