#diagnostics #cross-platform #cli #terminal #bugreport

bugreport

Collect system and environment information for bug reports

7 releases (4 breaking)

0.5.0 Apr 1, 2022
0.4.1 Jul 29, 2021
0.4.0 May 9, 2021
0.3.0 Jan 6, 2021
0.1.0 Dec 31, 2020

#140 in Command-line interface

Download history 3528/week @ 2022-12-02 5559/week @ 2022-12-09 3238/week @ 2022-12-16 2242/week @ 2022-12-23 3846/week @ 2022-12-30 4327/week @ 2023-01-06 2862/week @ 2023-01-13 3574/week @ 2023-01-20 4280/week @ 2023-01-27 3202/week @ 2023-02-03 3211/week @ 2023-02-10 3085/week @ 2023-02-17 5604/week @ 2023-02-24 3723/week @ 2023-03-03 3650/week @ 2023-03-10 2714/week @ 2023-03-17

16,131 downloads per month
Used in 16 crates (7 directly)

MIT/Apache

26KB
628 lines

bugreport

Continuous integration Crates.io Documentation

bugreport is a Rust library that helps application developers to automatically collect information about the system and the environment that users can send along with a bug report (similar to git bugreport or ffmpeg … -report).

Note: This library is in an early stage and the API may change in the future.

Example

The following code

use bugreport::{bugreport, collector::*, format::Markdown};

fn main() {
    bugreport!()
        .info(SoftwareVersion::default())
        .info(OperatingSystem::default())
        .info(CommandLine::default())
        .info(EnvironmentVariables::list(&["SHELL", "EDITOR"]))
        .info(CommandOutput::new("Python version", "python", &["-V"]))
        .info(CompileTimeInformation::default())
        .print::<Markdown>();
}

generates bug report information that looks like this.

Collectors

  • Crate information (name, version, git hash)
  • Operating system (type, name, version)
  • Command line (including all arguments)
  • Environment variables (e.g. SHELL, PATH, …)
  • File contents (e.g. config files)
  • Directory contents
  • Command output (e.g. bash --version)
  • Compile time information (profile, target, architecture, cpu features, etc.)
  • Current working directory
  • Date and time
  • User defined collectors

Features

  • Markdown export
  • Open report output in editor (instead of printing to stdout, see git bugreport)
  • Ask user for permission to gather information?
  • Automatic anonymization of information? (e.g.: remove /home/username from paths)
  • JSON export (?)

Use cases / prior art

Related crates

Other crates that might be useful:

  • human-panic - Make panic messages nice for humans to read.

Dependencies

~195KB