47 lines · 1.1 KB · Rust
RawDownload
use std::{io, path::Path, process::Command}; use crate::utils::Program; pub struct Support {    bat: Program,} impl Default for Support {    fn default() -> Self {        Self::new()    }} impl Support {    pub fn new() -> Self {        Support {            bat: Program::named("bat"),        }    }     pub fn display_to_tty(        &self,        path: &Path,        path_for_title: &Path,        additional_title: impl AsRef<str>,    ) -> io::Result<()> {        if !self.bat.found {            log::warn!(                "Would want to use 'bat' for colored preview of '{}', but it wasn't available in the PATH.",                path.display()            );            return Ok(());        }        if Command::new("bat")            .args(&["--paging=always", "-l=md", "--file-name"])            .arg(format!("{} ({})", path_for_title.display(), additional_title.as_ref()))            .arg(path)            .status()?            .success()        {            Ok(())        } else {            Err(io::Error::new(io::ErrorKind::Other, "bat exited with an error"))        }    }}