diff --git a/summarize/src/main.rs b/summarize/src/main.rs index 9c3ce65..6ce8872 100644 --- a/summarize/src/main.rs +++ b/summarize/src/main.rs @@ -106,8 +106,9 @@ fn diff(opt: DiffOpt) -> Result<(), Box> { } let mut table = Table::new(); + table.set_format(*prettytable::format::consts::FORMAT_NO_LINESEP_WITH_TITLE); - table.add_row(row!( + table.set_titles(row!( "Item", "Self Time", "Self Time Change", @@ -120,6 +121,17 @@ fn diff(opt: DiffOpt) -> Result<(), Box> { "Incremental hashing time", )); + let label_max_width = (results.query_data.iter()) + .map(|q| q.label.len()) + .max() + .unwrap_or(0); + fn pad(s: &str, max: usize) -> String { + let Some(pad) = max.checked_sub(s.len()) else { + return s.to_string(); + }; + + format!("{s}{:. Result<(), Box> { } table.add_row(row![ - query_data.label, + pad(&query_data.label, label_max_width), format!("{:.2?}", query_data.self_time), format!("{:+.2}%", query_data.self_time_change), format!("{:.2?}", query_data.time), @@ -145,8 +157,9 @@ fn diff(opt: DiffOpt) -> Result<(), Box> { println!("Total cpu time: {:?}", results.total_time); let mut table = Table::new(); + table.set_format(*prettytable::format::consts::FORMAT_NO_LINESEP_WITH_TITLE); - table.add_row(row!("Item", "Artifact Size Change",)); + table.set_titles(row!("Item", "Artifact Size Change",)); for artifact_size in results.artifact_sizes { let exclude = opt.exclude.iter().any(|e| artifact_size.label.contains(e)); @@ -192,6 +205,7 @@ fn summarize(opt: SummarizeOpt) -> Result<(), Box> { .sort_by(|l, r| r.self_time.cmp(&l.self_time)); let mut table = Table::new(); + table.set_format(*prettytable::format::consts::FORMAT_NO_LINESEP_WITH_TITLE); let mut has_cache_hits = false; let mut has_blocked_time = false; @@ -244,11 +258,22 @@ fn summarize(opt: SummarizeOpt) -> Result<(), Box> { .collect() } - table.add_row(Row::new(filter_cells(columns))); + table.set_titles(Row::new(filter_cells(columns))); let total_time = results.total_time.as_nanos() as f64; let mut percent_total_time: f64 = 0.0; + let label_max_width = (results.query_data.iter()) + .map(|q| q.label.len()) + .max() + .unwrap_or(0); + fn pad(s: &str, max: usize) -> String { + let Some(pad) = max.checked_sub(s.len()) else { + return s.to_string(); + }; + + format!("{s}{:. Result<(), Box> { // Don't show the cache hits, blocked time or incremental load time columns unless there is // data to show. table.add_row(Row::new(filter_cells(&[ - (&query_data.label, true), + (&pad(&query_data.label, label_max_width), true), (&format!("{:.2?}", query_data.self_time), true), (&format!("{:.3}", curr_percent), true), (&format!("{:.2?}", query_data.time), true), @@ -296,8 +321,9 @@ fn summarize(opt: SummarizeOpt) -> Result<(), Box> { } let mut table = Table::new(); + table.set_format(*prettytable::format::consts::FORMAT_NO_LINESEP_WITH_TITLE); - table.add_row(row!("Item", "Artifact Size",)); + table.set_titles(row!("Item", "Artifact Size")); for artifact_size in results.artifact_sizes { table.add_row(row![