Reorganise build script into modules

pull/2765/head
cyqsimon 7 months ago committed by Martin Nordholts
parent f3a5e9a73c
commit 79a03b4299

@ -8,7 +8,7 @@ name = "bat"
repository = "https://github.com/sharkdp/bat"
version = "0.24.0"
exclude = ["assets/syntaxes/*", "assets/themes/*"]
build = "build.rs"
build = "build/main.rs"
edition = '2021'
rust-version = "1.70"

@ -1,17 +1,9 @@
use std::{collections::HashMap, fs, path::Path};
use std::{env, fs, path::PathBuf};
fn main() -> anyhow::Result<()> {
#[cfg(feature = "application")]
gen_man_and_comp()?;
Ok(())
}
use crate::util::render_template;
/// Generate manpage and shell completions for the bat application.
#[cfg(feature = "application")]
fn gen_man_and_comp() -> anyhow::Result<()> {
use std::{env, path::PathBuf};
pub fn gen_man_and_comp() -> anyhow::Result<()> {
// Read environment variables.
let project_name = env::var("PROJECT_NAME").unwrap_or("bat".into());
let executable_name = env::var("PROJECT_EXECUTABLE").unwrap_or(project_name.clone());
@ -65,22 +57,3 @@ fn gen_man_and_comp() -> anyhow::Result<()> {
Ok(())
}
/// Generates a file from a template.
#[allow(dead_code)]
fn render_template(
variables: &HashMap<&str, String>,
in_file: &str,
out_file: impl AsRef<Path>,
) -> anyhow::Result<()> {
let mut content = fs::read_to_string(in_file)?;
for (variable_name, value) in variables {
// Replace {{variable_name}} by the value
let pattern = format!("{{{{{variable_name}}}}}");
content = content.replace(&pattern, value);
}
fs::write(out_file, content)?;
Ok(())
}

@ -0,0 +1,10 @@
#[cfg(feature = "application")]
mod application;
mod util;
fn main() -> anyhow::Result<()> {
#[cfg(feature = "application")]
application::gen_man_and_comp()?;
Ok(())
}

@ -0,0 +1,21 @@
#![allow(dead_code)]
use std::{collections::HashMap, fs, path::Path};
/// Generates a file from a template.
pub fn render_template(
variables: &HashMap<&str, String>,
in_file: &str,
out_file: impl AsRef<Path>,
) -> anyhow::Result<()> {
let mut content = fs::read_to_string(in_file)?;
for (variable_name, value) in variables {
// Replace {{variable_name}} by the value
let pattern = format!("{{{{{variable_name}}}}}");
content = content.replace(&pattern, value);
}
fs::write(out_file, content)?;
Ok(())
}
Loading…
Cancel
Save