summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Tolnay <dtolnay@gmail.com>2020-03-30 10:36:26 -0700
committerDavid Peter <sharkdp@users.noreply.github.com>2020-03-31 09:27:56 +0200
commit014d7545889667e62eb30f6a5717f00a90616c06 (patch)
treef5b9136f02293df65801e49bf7b14c704c3d0449
parent4e11abdf9b0b28dfda2ec4904ddf0a82e524a847 (diff)
Move paging support behind a feature
-rw-r--r--Cargo.toml4
-rwxr-xr-xci/script.bash1
-rw-r--r--src/config.rs2
-rw-r--r--src/less.rs2
-rw-r--r--src/output.rs24
5 files changed, 25 insertions, 8 deletions
diff --git a/Cargo.toml b/Cargo.toml
index c9bd3ad9..98f76e41 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -26,9 +26,11 @@ application = [
"git",
"lazy_static",
"liquid",
+ "paging",
"wild",
]
git = ["git2"] # Support indicating git modifications
+paging = ["shell-words"] # Support applying a pager on the output
[dependencies]
atty = { version = "0.2.14", optional = true }
@@ -40,7 +42,7 @@ lazy_static = { version = "1.4", optional = true }
wild = { version = "2.0", optional = true }
content_inspector = "0.2.4"
encoding = "0.2"
-shell-words = "0.1.0"
+shell-words = { version = "0.1.0", optional = true }
unicode-width = "0.1.7"
globset = "0.4"
diff --git a/ci/script.bash b/ci/script.bash
index d2055bb2..0a7a3ee8 100755
--- a/ci/script.bash
+++ b/ci/script.bash
@@ -16,3 +16,4 @@ fi
# Check bat-as-a-library, which has a smaller set of dependencies
cargo check --target "$TARGET" --verbose --lib --no-default-features
cargo check --target "$TARGET" --verbose --lib --no-default-features --features git
+cargo check --target "$TARGET" --verbose --lib --no-default-features --features paging
diff --git a/src/config.rs b/src/config.rs
index 6a0c2530..d06c38d6 100644
--- a/src/config.rs
+++ b/src/config.rs
@@ -6,7 +6,9 @@ pub use crate::wrap::OutputWrap;
#[derive(Debug, Clone, Copy, PartialEq)]
pub enum PagingMode {
+ #[cfg(feature = "paging")]
Always,
+ #[cfg(feature = "paging")]
QuitIfOneScreen,
Never,
}
diff --git a/src/less.rs b/src/less.rs
index f7429333..aaab849f 100644
--- a/src/less.rs
+++ b/src/less.rs
@@ -1,3 +1,5 @@
+#![cfg(feature = "paging")]
+
use std::process::Command;
pub fn retrieve_less_version() -> Option<usize> {
diff --git a/src/output.rs b/src/output.rs
index 134ab7b5..1a3f6e88 100644
--- a/src/output.rs
+++ b/src/output.rs
@@ -1,31 +1,39 @@
-use std::env;
-use std::ffi::OsString;
use std::io::{self, Write};
-use std::path::PathBuf;
-use std::process::{Child, Command, Stdio};
+#[cfg(feature = "paging")]
+use std::process::Child;
use crate::config::PagingMode;
use crate::errors::*;
+#[cfg(feature = "paging")]
use crate::less::retrieve_less_version;
#[derive(Debug)]
pub enum OutputType {
+ #[cfg(feature = "paging")]
Pager(Child),
Stdout(io::Stdout),
}
impl OutputType {
pub fn from_mode(mode: PagingMode, pager: Option<&str>) -> Result<Self> {
- use self::PagingMode::*;
+ let _ = pager;
Ok(match mode {
- Always => OutputType::try_pager(false, pager)?,
- QuitIfOneScreen => OutputType::try_pager(true, pager)?,
+ #[cfg(feature = "paging")]
+ PagingMode::Always => OutputType::try_pager(false, pager)?,
+ #[cfg(feature = "paging")]
+ PagingMode::QuitIfOneScreen => OutputType::try_pager(true, pager)?,
_ => OutputType::stdout(),
})
}
/// Try to launch the pager. Fall back to stdout in case of errors.
+ #[cfg(feature = "paging")]
fn try_pager(quit_if_one_screen: bool, pager_from_config: Option<&str>) -> Result<Self> {
+ use std::env;
+ use std::ffi::OsString;
+ use std::path::PathBuf;
+ use std::process::{Command, Stdio};
+
let mut replace_arguments_to_less = false;
let pager_from_env = match (env::var("BAT_PAGER"), env::var("PAGER")) {
@@ -114,6 +122,7 @@ impl OutputType {
pub fn handle(&mut self) -> Result<&mut dyn Write> {
Ok(match *self {
+ #[cfg(feature = "paging")]
OutputType::Pager(ref mut command) => command
.stdin
.as_mut()
@@ -123,6 +132,7 @@ impl OutputType {
}
}
+#[cfg(feature = "paging")]
impl Drop for OutputType {
fn drop(&mut self) {
if let OutputType::Pager(ref mut command) = *self {