summaryrefslogtreecommitdiffstats
path: root/build.rs
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2020-03-30 09:43:13 -0700
committerDavid Peter <sharkdp@users.noreply.github.com>2020-03-31 09:27:56 +0200
commit570805bc985227a8e612878d8f62becd70b7b16a (patch)
tree5a07630c0eb1596d26657f6b34133ee4997802ae /build.rs
parente7e1967bb0c4ef4a5d90f093e2562b214e28c7c8 (diff)
Strip dependencies of bat-as-a-library
Diffstat (limited to 'build.rs')
-rw-r--r--build.rs66
1 files changed, 35 insertions, 31 deletions
diff --git a/build.rs b/build.rs
index bff88e9f..074caaff 100644
--- a/build.rs
+++ b/build.rs
@@ -1,38 +1,42 @@
// TODO: Re-enable generation of shell completion files (below) when clap 3 is out.
// For more details, see https://github.com/sharkdp/bat/issues/372
-#[macro_use]
-extern crate lazy_static;
-extern crate liquid;
-
-use std::error::Error;
-use std::fs;
-use std::path::Path;
-
-// Read environment variables.
-lazy_static! {
- pub static ref PROJECT_NAME: &'static str = option_env!("PROJECT_NAME").unwrap_or("bat");
- pub static ref PROJECT_VERSION: &'static str = option_env!("CARGO_PKG_VERSION").unwrap();
- pub static ref EXECUTABLE_NAME: &'static str = option_env!("PROJECT_EXECUTABLE")
- .or(option_env!("PROJECT_NAME"))
- .unwrap_or("bat");
-}
-
-/// Generates a file from a liquid template.
-fn template(
- variables: &liquid::Object,
- in_file: &str,
- out_file: impl AsRef<Path>,
-) -> Result<(), Box<dyn Error>> {
- let template = liquid::ParserBuilder::with_stdlib()
- .build()?
- .parse(&fs::read_to_string(in_file)?)?;
-
- fs::write(out_file, template.render(variables)?)?;
- Ok(())
-}
+// For bat-as-a-library, no build script is required. The build script is for
+// the manpage and completions, which are only relevant to the bat application.
+#[cfg(not(feature = "application"))]
+fn main() {}
+
+#[cfg(feature = "application")]
+fn main() -> Result<(), Box<dyn std::error::Error>> {
+ use std::error::Error;
+ use std::fs;
+ use std::path::Path;
+
+ use lazy_static::lazy_static;
+
+ // Read environment variables.
+ lazy_static! {
+ static ref PROJECT_NAME: &'static str = option_env!("PROJECT_NAME").unwrap_or("bat");
+ static ref PROJECT_VERSION: &'static str = option_env!("CARGO_PKG_VERSION").unwrap();
+ static ref EXECUTABLE_NAME: &'static str = option_env!("PROJECT_EXECUTABLE")
+ .or(option_env!("PROJECT_NAME"))
+ .unwrap_or("bat");
+ }
+
+ /// Generates a file from a liquid template.
+ fn template(
+ variables: &liquid::Object,
+ in_file: &str,
+ out_file: impl AsRef<Path>,
+ ) -> Result<(), Box<dyn Error>> {
+ let template = liquid::ParserBuilder::with_stdlib()
+ .build()?
+ .parse(&fs::read_to_string(in_file)?)?;
+
+ fs::write(out_file, template.render(variables)?)?;
+ Ok(())
+ }
-fn main() -> Result<(), Box<dyn Error>> {
let variables = liquid::object!({
"PROJECT_NAME": PROJECT_NAME.to_owned(),
"PROJECT_EXECUTABLE": EXECUTABLE_NAME.to_owned(),