Add --diagnostic option to bat

This commit is contained in:
sharkdp 2020-12-31 18:17:15 +01:00 committed by David Peter
parent 5e1f9fadf4
commit ebb97e94a9
4 changed files with 88 additions and 4 deletions

61
Cargo.lock generated
View File

@ -98,6 +98,7 @@ dependencies = [
"ansi_term 0.12.1",
"assert_cmd",
"atty",
"bugreport",
"clap",
"clircle",
"console",
@ -193,6 +194,16 @@ dependencies = [
"memchr",
]
[[package]]
name = "bugreport"
version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "824268bc0fcb3b94da597b81fa9dd52175cfde5522f4892a0cff3932802ff805"
dependencies = [
"snailquote",
"sys-info",
]
[[package]]
name = "byte-tools"
version = "0.3.1"
@ -1070,6 +1081,16 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6fa3938c99da4914afedd13bf3d79bcb6c277d1b2c398d23257a304d9e1b074"
[[package]]
name = "snailquote"
version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f34b729d802f52194598858ac852c3fb3b33f6e026cd03195072ccb7bf3fc810"
dependencies = [
"thiserror",
"unicode_categories",
]
[[package]]
name = "std_prelude"
version = "0.2.12"
@ -1084,9 +1105,9 @@ checksum = "8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a"
[[package]]
name = "syn"
version = "1.0.42"
version = "1.0.55"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9c51d92969d209b54a98397e1b91c8ae82d8c87a7bb87df0b29aa2ad81454228"
checksum = "a571a711dddd09019ccc628e1b17fe87c59b09d513c06c026877aa708334f37a"
dependencies = [
"proc-macro2",
"quote",
@ -1116,6 +1137,16 @@ dependencies = [
"yaml-rust",
]
[[package]]
name = "sys-info"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e5cfbd84f86389198ade41b439f72a5b1b3a8ba728e61cd589e1720d0df44c39"
dependencies = [
"cc",
"libc",
]
[[package]]
name = "tempdir"
version = "0.3.7"
@ -1156,6 +1187,26 @@ dependencies = [
"unicode-width",
]
[[package]]
name = "thiserror"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e9ae34b84616eedaaf1e9dd6026dbe00dcafa92aa0c8077cb69df1fcfe5e53e"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.22"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ba20f23e85b10754cd195504aebf6a27e2e6cbe28c17778a0c930724628dd56"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]]
name = "thread_local"
version = "1.0.1"
@ -1219,6 +1270,12 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f7fe0bb3479651439c9112f72b6c505038574c9fbb575ed1bf3b797fa39dd564"
[[package]]
name = "unicode_categories"
version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "39ec24b3121d976906ece63c9daad25b85969647682eee313cb5779fdd69e14e"
[[package]]
name = "url"
version = "2.1.1"

View File

@ -51,6 +51,7 @@ serde_yaml = "0.8"
semver = "0.11"
path_abs = { version = "0.5", default-features = false }
clircle = "0.2.0"
bugreport = "0.1"
[dependencies.git2]
version = "0.13"

View File

@ -477,6 +477,12 @@ pub fn build_app(interactive_output: bool) -> ClapApp<'static, 'static> {
.hidden(true)
.help("Show bat's cache directory."),
)
.arg(
Arg::with_name("diagnostic")
.long("diagnostic")
.hidden_short_help(true)
.help("Show diagnostic information for bug reports.")
)
.help_message("Print this help message.")
.version_message("Show version information.");

View File

@ -35,8 +35,7 @@ use bat::{
error::*,
input::Input,
style::{StyleComponent, StyleComponents},
MappingTarget,
PagingMode,
MappingTarget, PagingMode,
};
const THEME_PREVIEW_DATA: &[u8] = include_bytes!("../../../assets/theme_preview.rs");
@ -228,6 +227,27 @@ fn run_controller(inputs: Vec<Input>, config: &Config) -> Result<bool> {
fn run() -> Result<bool> {
let app = App::new()?;
if app.matches.is_present("diagnostic") {
use bugreport::{bugreport, collectors::*};
bugreport!()
.info(SoftwareVersion::default())
.info(OperatingSystem::default())
.info(CommandLine::default())
.info(EnvironmentVariables::list(&[
"SHELL",
"PAGER",
"BAT_PAGER",
"BAT_CONFIG_PATH",
"BAT_STYLE",
"BAT_THEME",
"BAT_TABS",
]))
.print_markdown();
return Ok(true);
}
match app.matches.subcommand() {
("cache", Some(cache_matches)) => {
// If there is a file named 'cache' in the current working directory,