diff options
| -rw-r--r-- | src/ci/citool/src/analysis.rs | 13 | ||||
| -rw-r--r-- | src/ci/citool/src/utils.rs | 14 |
2 files changed, 18 insertions, 9 deletions
diff --git a/src/ci/citool/src/analysis.rs b/src/ci/citool/src/analysis.rs index 566b8e603fb..8a375443577 100644 --- a/src/ci/citool/src/analysis.rs +++ b/src/ci/citool/src/analysis.rs @@ -1,6 +1,6 @@ use crate::metrics; use crate::metrics::{JobMetrics, JobName, get_test_suites}; -use crate::utils::pluralize; +use crate::utils::{output_details, pluralize}; use build_helper::metrics::{ BuildStep, JsonRoot, TestOutcome, TestSuite, TestSuiteMetadata, format_build_steps, }; @@ -19,14 +19,9 @@ fn record_bootstrap_step_durations(metrics: &JsonRoot) { let step = BuildStep::from_invocation(invocation); let table = format_build_steps(&step); eprintln!("Step `{}`\n{table}\n", invocation.cmdline); - println!( - r"<details> -<summary>{}</summary> -<pre><code>{table}</code></pre> -</details> -", - invocation.cmdline - ); + output_details(&invocation.cmdline, || { + println!("<pre><code>{table}</code></pre>"); + }); } eprintln!("Recorded {} bootstrap invocation(s)", metrics.invocations.len()); } diff --git a/src/ci/citool/src/utils.rs b/src/ci/citool/src/utils.rs index a18af96bf3d..bbe24c3633b 100644 --- a/src/ci/citool/src/utils.rs +++ b/src/ci/citool/src/utils.rs @@ -13,3 +13,17 @@ pub fn read_to_string<P: AsRef<Path>>(path: P) -> anyhow::Result<String> { pub fn pluralize(text: &str, count: usize) -> String { if count == 1 { text.to_string() } else { format!("{text}s") } } + +/// Outputs a HTML <details> section with the provided summary. +/// Output printed by `func` will be contained within the section. +pub fn output_details<F>(summary: &str, func: F) +where + F: FnOnce(), +{ + println!( + r"<details> +<summary>{summary}</summary>" + ); + func(); + println!("</details>\n"); +} |
