aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToby Vincent <tobyv@tobyvin.dev>2023-07-19 12:48:06 -0500
committerToby Vincent <tobyv@tobyvin.dev>2023-07-19 12:48:06 -0500
commite3e0b6d83a017aea7927ef14844991e3339fcf6e (patch)
tree9614b31e6be8e0883bb211af8b1419708b2c1a53
parentc12dde6df7a3aa770f611ea4e9031c5153da66f3 (diff)
build: remove OUT_DIR subfolders
-rw-r--r--build.rs42
1 files changed, 17 insertions, 25 deletions
diff --git a/build.rs b/build.rs
index 96686ec..356b6bb 100644
--- a/build.rs
+++ b/build.rs
@@ -1,4 +1,9 @@
-use std::{fs::File, io, path::Path};
+use std::{
+ env,
+ fs::{self, File},
+ io,
+ path::{Path, PathBuf},
+};
use clap::{CommandFactory, ValueEnum};
use clap_complete::Shell;
@@ -8,50 +13,37 @@ use clap_mangen::Man;
mod config;
fn main() {
- // OUT_DIR is where any additional build artifacts are written; Set by Cargo.
- let Some(out_dir) = std::env::var_os("OUT_DIR") else {
+ let Some(out_dir): Option<PathBuf> = env::var_os("OUT_DIR").map(Into::into) else {
eprintln!("OUT_DIR environment variable not defined.");
std::process::exit(1);
};
- std::fs::create_dir_all(&out_dir).unwrap();
+ fs::create_dir_all(&out_dir).unwrap();
let cmd = config::Config::command();
let bin_name = cmd.get_bin_name().unwrap_or_else(|| cmd.get_name());
- if let Err(err) = generate_man_page(bin_name, &out_dir) {
- eprintln!("failed to generate man page: {}", err);
+ if let Err(err) = mangen(bin_name, &out_dir) {
+ eprintln!("Failed to generate man page: {}", err);
}
- if let Err(err) = generate_completions(bin_name, &out_dir) {
- eprintln!("failed to generate shell completion: {}", err);
+ if let Err(err) = complete(bin_name, &out_dir) {
+ eprintln!("Failed to generate shell completion: {}", err);
}
+ println!("cargo:rerun-if-changed=src/config.rs");
println!("cargo:rerun-if-changed=build.rs");
}
-fn generate_man_page<P: AsRef<Path>>(bin_name: &str, out_dir: P) -> Result<(), io::Error> {
- let out_dir = out_dir.as_ref().join("man");
- std::fs::create_dir_all(&out_dir)?;
-
+fn mangen(bin_name: &str, out_dir: &Path) -> io::Result<()> {
let cmd = config::Config::command();
-
- let mut man_page = out_dir.join(bin_name);
- man_page.set_extension("1");
-
- let mut file = File::create(&man_page)?;
-
+ let mut file = File::create(out_dir.join(format!("{bin_name}.1")))?;
Man::new(cmd).render(&mut file)
}
-fn generate_completions<P: AsRef<Path>>(bin_name: &str, out_dir: P) -> Result<(), io::Error> {
- let out_dir = out_dir.as_ref().join("completions");
- std::fs::create_dir_all(&out_dir)?;
-
+fn complete(bin_name: &str, out_dir: &Path) -> io::Result<()> {
let mut cmd = config::Config::command();
-
Shell::value_variants().iter().try_for_each(|&shell| {
- clap_complete::generate_to(shell, &mut cmd, bin_name, out_dir.as_path())?;
- Ok(())
+ clap_complete::generate_to(shell, &mut cmd, bin_name, out_dir).map(|_| ())
})
}