diff --git a/tokio-console/src/config.rs b/tokio-console/src/config.rs index 9e0153e5d..04f14b917 100644 --- a/tokio-console/src/config.rs +++ b/tokio-console/src/config.rs @@ -330,6 +330,42 @@ impl Config { .clone() } + pub(crate) fn add_issue_metadata( + &self, + mut builder: color_eyre::config::HookBuilder, + ) -> color_eyre::config::HookBuilder { + macro_rules! add_issue_metadata { + ($self:ident, $builder:ident => + $( + $($name:ident).+ + ),+ + $(,)? + ) => { + $( + $builder = $builder.add_issue_metadata(concat!("config", $(".", stringify!($name)),+), format!("`{:?}`", $self$(.$name)+)); + )* + } + } + + add_issue_metadata! { + self, builder => + subcmd, + target_addr, + env_filter, + log_directory, + retain_for, + view_options.no_colors, + view_options.lang, + view_options.ascii_only, + view_options.truecolor, + view_options.palette, + view_options.toggles.color_durations, + view_options.toggles.color_terminated, + } + + builder + } + fn from_path(config_path: ConfigPath) -> color_eyre::Result> { ConfigFile::from_path(config_path)? .map(|config| config.try_into()) diff --git a/tokio-console/src/main.rs b/tokio-console/src/main.rs index 50f6eb720..c10b062a6 100644 --- a/tokio-console/src/main.rs +++ b/tokio-console/src/main.rs @@ -29,7 +29,7 @@ async fn main() -> color_eyre::Result<()> { // initialize error handling first, in case panics occur while setting up // other stuff. let styles = view::Styles::from_config(args.view_options.clone()); - styles.error_init()?; + styles.error_init(&args)?; args.trace_init()?; tracing::debug!(?args.target_addr, ?args.view_options); diff --git a/tokio-console/src/view/styles.rs b/tokio-console/src/view/styles.rs index c95174e67..b71587c1d 100644 --- a/tokio-console/src/view/styles.rs +++ b/tokio-console/src/view/styles.rs @@ -47,7 +47,7 @@ impl Styles { } } - pub fn error_init(&self) -> color_eyre::Result<()> { + pub fn error_init(&self, cfg: &crate::config::Config) -> color_eyre::Result<()> { use color_eyre::{ config::{HookBuilder, Theme}, ErrorKind, @@ -55,7 +55,6 @@ impl Styles { let mut builder = HookBuilder::new() .issue_url(concat!(env!("CARGO_PKG_REPOSITORY"), "/issues/new")) - .add_issue_metadata("version", env!("CARGO_PKG_VERSION")) .issue_filter(|kind| match kind { // Only suggest reporting GitHub issues for panics, not for // errors, so people don't open GitHub issues for stuff like not @@ -69,7 +68,10 @@ impl Styles { // // this includes `std::rt`, `color_eyre`'s own frames, and // `tokio::runtime` & friends. - .add_default_filters(); + .add_default_filters() + .add_issue_metadata("version", env!("CARGO_PKG_VERSION")); + // Add all the config values to the GitHub issue metadata + builder = cfg.add_issue_metadata(builder); if self.palette == Palette::NoColors { // disable colors in error reports