|
| 1 | +#[cfg(feature = "cli")] |
1 | 2 | use clap::CommandFactory; |
| 3 | +#[cfg(feature = "cli")] |
2 | 4 | use clap_complete::{generate_to, shells::Shell}; |
| 5 | +#[cfg(feature = "cli")] |
3 | 6 | use path_absolutize::*; |
4 | 7 |
|
| 8 | +#[cfg(feature = "cli")] |
5 | 9 | #[path = "src/cli.rs"] |
6 | 10 | mod cli; |
7 | 11 |
|
| 12 | +#[cfg(feature = "cli")] |
8 | 13 | #[path = "src/page.rs"] |
9 | 14 | pub mod page; |
10 | 15 |
|
11 | 16 | fn main() -> std::io::Result<()> { |
12 | | - let out_dir = |
13 | | - std::path::PathBuf::from(std::env::var_os("OUT_DIR").ok_or(std::io::ErrorKind::NotFound)?); |
14 | | - let mut cmd = cli::Args::command(); |
15 | | - |
16 | | - let man = clap_mangen::Man::new(cmd.clone()); |
17 | | - let mut buffer: Vec<u8> = Default::default(); |
18 | | - man.render(&mut buffer)?; |
19 | | - |
20 | | - // Create a man directory at the same level as the binary, even though build |
21 | | - // scripts shouldn't |
22 | | - let man_dir = &out_dir.join("../../../man"); |
23 | | - let absolute_man_dir = man_dir.absolutize()?; |
24 | | - std::fs::create_dir_all(&absolute_man_dir)?; |
25 | | - let man_path = absolute_man_dir.join("paper-age.1"); |
26 | | - std::fs::write(man_path, buffer)?; |
27 | | - |
28 | | - // Create a completion directory the same level as the binary |
29 | | - let completion_dir = out_dir.join("../../../completion"); |
30 | | - let absolute_completion_dir = completion_dir.absolutize()?; |
31 | | - std::fs::create_dir_all(absolute_completion_dir.clone())?; |
32 | | - for shell in [Shell::Bash, Shell::Fish, Shell::Zsh] { |
33 | | - generate_to( |
34 | | - shell, |
35 | | - &mut cmd, |
36 | | - "paper-age", |
37 | | - absolute_completion_dir.as_ref(), |
38 | | - )?; |
| 17 | + #[cfg(feature = "cli")] |
| 18 | + { |
| 19 | + let out_dir = std::path::PathBuf::from( |
| 20 | + std::env::var_os("OUT_DIR").ok_or(std::io::ErrorKind::NotFound)?, |
| 21 | + ); |
| 22 | + let mut cmd = cli::Args::command(); |
| 23 | + |
| 24 | + let man = clap_mangen::Man::new(cmd.clone()); |
| 25 | + let mut buffer: Vec<u8> = Default::default(); |
| 26 | + man.render(&mut buffer)?; |
| 27 | + |
| 28 | + // Create a man directory at the same level as the binary, even though build |
| 29 | + // scripts shouldn't |
| 30 | + let man_dir = &out_dir.join("../../../man"); |
| 31 | + let absolute_man_dir = man_dir.absolutize()?; |
| 32 | + std::fs::create_dir_all(&absolute_man_dir)?; |
| 33 | + let man_path = absolute_man_dir.join("paper-age.1"); |
| 34 | + std::fs::write(man_path, buffer)?; |
| 35 | + |
| 36 | + // Create a completion directory the same level as the binary |
| 37 | + let completion_dir = out_dir.join("../../../completion"); |
| 38 | + let absolute_completion_dir = completion_dir.absolutize()?; |
| 39 | + std::fs::create_dir_all(absolute_completion_dir.clone())?; |
| 40 | + for shell in [Shell::Bash, Shell::Fish, Shell::Zsh] { |
| 41 | + generate_to( |
| 42 | + shell, |
| 43 | + &mut cmd, |
| 44 | + "paper-age", |
| 45 | + absolute_completion_dir.as_ref(), |
| 46 | + )?; |
| 47 | + } |
| 48 | + |
| 49 | + // Re-run if the cli or page files change |
| 50 | + println!("cargo:rerun-if-changed=src/cli.rs"); |
| 51 | + println!("cargo:rerun-if-changed=src/page.rs"); |
39 | 52 | } |
40 | 53 |
|
41 | | - // Re-run if the cli or page files change |
42 | | - println!("cargo:rerun-if-changed=src/cli.rs"); |
43 | | - println!("cargo:rerun-if-changed=src/page.rs"); |
44 | | - |
45 | 54 | Ok(()) |
46 | 55 | } |
0 commit comments