Skip to content

Commit fcb54df

Browse files
committed
feat(console): include config options in autogenerated issues (tokio-rs#365)
This adds a dump of all the console's config options to the issue metadata for GitHub issues generated using `color_eyre`'s GitHub issue generation on panics. <details> <summary>Example issue Markdown:</summary> ## Error ``` lol ``` ## Metadata |key|value| |--|--| |**version**|0.1.6| |**config.subcmd**|`None`| |**config.target_addr**|`Some(http://127.0.0.1:6669/)`| |**config.env_filter**|`None`| |**config.log_directory**|`Some("/tmp/tokio-console/logs")`| |**config.retain_for**|`None`| |**config.view_options.no_colors**|`false`| |**config.view_options.lang**|`Some("en_US.UTF-8")`| |**config.view_options.ascii_only**|`Some(false)`| |**config.view_options.truecolor**|`Some(true)`| |**config.view_options.palette**|`Some(All)`| |**config.view_options.toggles.color_durations**|`Some(false)`| |**config.view_options.toggles.color_terminated**|`Some(false)`| |**location**|tokio-console/src/main.rs:36:5| </summary>
1 parent 523a44a commit fcb54df

File tree

3 files changed

+42
-4
lines changed

3 files changed

+42
-4
lines changed

tokio-console/src/config.rs

+36
Original file line numberDiff line numberDiff line change
@@ -330,6 +330,42 @@ impl Config {
330330
.clone()
331331
}
332332

333+
pub(crate) fn add_issue_metadata(
334+
&self,
335+
mut builder: color_eyre::config::HookBuilder,
336+
) -> color_eyre::config::HookBuilder {
337+
macro_rules! add_issue_metadata {
338+
($self:ident, $builder:ident =>
339+
$(
340+
$($name:ident).+
341+
),+
342+
$(,)?
343+
) => {
344+
$(
345+
$builder = $builder.add_issue_metadata(concat!("config", $(".", stringify!($name)),+), format!("`{:?}`", $self$(.$name)+));
346+
)*
347+
}
348+
}
349+
350+
add_issue_metadata! {
351+
self, builder =>
352+
subcmd,
353+
target_addr,
354+
env_filter,
355+
log_directory,
356+
retain_for,
357+
view_options.no_colors,
358+
view_options.lang,
359+
view_options.ascii_only,
360+
view_options.truecolor,
361+
view_options.palette,
362+
view_options.toggles.color_durations,
363+
view_options.toggles.color_terminated,
364+
}
365+
366+
builder
367+
}
368+
333369
fn from_path(config_path: ConfigPath) -> color_eyre::Result<Option<Self>> {
334370
ConfigFile::from_path(config_path)?
335371
.map(|config| config.try_into())

tokio-console/src/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ async fn main() -> color_eyre::Result<()> {
2929
// initialize error handling first, in case panics occur while setting up
3030
// other stuff.
3131
let styles = view::Styles::from_config(args.view_options.clone());
32-
styles.error_init()?;
32+
styles.error_init(&args)?;
3333

3434
args.trace_init()?;
3535
tracing::debug!(?args.target_addr, ?args.view_options);

tokio-console/src/view/styles.rs

+5-3
Original file line numberDiff line numberDiff line change
@@ -47,15 +47,14 @@ impl Styles {
4747
}
4848
}
4949

50-
pub fn error_init(&self) -> color_eyre::Result<()> {
50+
pub fn error_init(&self, cfg: &crate::config::Config) -> color_eyre::Result<()> {
5151
use color_eyre::{
5252
config::{HookBuilder, Theme},
5353
ErrorKind,
5454
};
5555

5656
let mut builder = HookBuilder::new()
5757
.issue_url(concat!(env!("CARGO_PKG_REPOSITORY"), "/issues/new"))
58-
.add_issue_metadata("version", env!("CARGO_PKG_VERSION"))
5958
.issue_filter(|kind| match kind {
6059
// Only suggest reporting GitHub issues for panics, not for
6160
// errors, so people don't open GitHub issues for stuff like not
@@ -69,7 +68,10 @@ impl Styles {
6968
//
7069
// this includes `std::rt`, `color_eyre`'s own frames, and
7170
// `tokio::runtime` & friends.
72-
.add_default_filters();
71+
.add_default_filters()
72+
.add_issue_metadata("version", env!("CARGO_PKG_VERSION"));
73+
// Add all the config values to the GitHub issue metadata
74+
builder = cfg.add_issue_metadata(builder);
7375

7476
if self.palette == Palette::NoColors {
7577
// disable colors in error reports

0 commit comments

Comments
 (0)