From 014d7545889667e62eb30f6a5717f00a90616c06 Mon Sep 17 00:00:00 2001 From: David Tolnay Date: Mon, 30 Mar 2020 10:36:26 -0700 Subject: Move paging support behind a feature --- Cargo.toml | 4 +++- ci/script.bash | 1 + src/config.rs | 2 ++ src/less.rs | 2 ++ src/output.rs | 24 +++++++++++++++++------- 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 { 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 { - 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 { + 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 { -- cgit v1.2.3