diff --git a/src/cli/autocorrect.rs b/src/cli/autocorrect.rs index 24f883e..253f310 100644 --- a/src/cli/autocorrect.rs +++ b/src/cli/autocorrect.rs @@ -126,6 +126,7 @@ const COMMAND_FLAGS: &[(&str, &[&str])] = &[ "--no-file-changes", "--dry-run", "--no-dry-run", + "--timings", ], ), ( diff --git a/src/cli/commands/ingest.rs b/src/cli/commands/ingest.rs index 442382b..70e9c45 100644 --- a/src/cli/commands/ingest.rs +++ b/src/cli/commands/ingest.rs @@ -59,12 +59,14 @@ pub struct ProjectSummary { pub events_failed: usize, pub statuses_enriched: usize, pub statuses_seen: usize, + pub status_errors: usize, pub mr_diffs_fetched: usize, pub mr_diffs_failed: usize, } /// Per-project status enrichment result, collected during ingestion. pub struct ProjectStatusEnrichment { + pub path: String, pub mode: String, pub reason: Option, pub seen: usize, @@ -664,6 +666,7 @@ async fn run_ingest_inner( total .status_enrichment_projects .push(ProjectStatusEnrichment { + path: path.clone(), mode: result.status_enrichment_mode.clone(), reason: result.status_unsupported_reason.clone(), seen: result.statuses_seen, @@ -682,6 +685,8 @@ async fn run_ingest_inner( events_failed: result.resource_events_failed, statuses_enriched: result.statuses_enriched, statuses_seen: result.statuses_seen, + status_errors: result.partial_error_count + + usize::from(result.status_enrichment_error.is_some()), mr_diffs_fetched: 0, mr_diffs_failed: 0, }); @@ -716,6 +721,7 @@ async fn run_ingest_inner( events_failed: result.resource_events_failed, statuses_enriched: 0, statuses_seen: 0, + status_errors: 0, mr_diffs_fetched: result.mr_diffs_fetched, mr_diffs_failed: result.mr_diffs_failed, }); diff --git a/src/cli/mod.rs b/src/cli/mod.rs index 32d1286..db4f342 100644 --- a/src/cli/mod.rs +++ b/src/cli/mod.rs @@ -789,6 +789,10 @@ pub struct SyncArgs { #[arg(long = "no-dry-run", hide = true, overrides_with = "dry_run")] pub no_dry_run: bool, + + /// Show detailed timing breakdown for sync stages + #[arg(short = 't', long = "timings")] + pub timings: bool, } #[derive(Parser)] diff --git a/src/main.rs b/src/main.rs index 9675dcd..fbf0096 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2099,7 +2099,7 @@ async fn handle_sync_cmd( "{}", Theme::warning().render("Interrupted by Ctrl+C. Partial results:") ); - print_sync(&result, elapsed, Some(metrics)); + print_sync(&result, elapsed, Some(metrics), args.timings); if released > 0 { eprintln!( "{}", @@ -2122,7 +2122,7 @@ async fn handle_sync_cmd( if robot_mode { print_sync_json(&result, elapsed.as_millis() as u64, Some(metrics)); } else { - print_sync(&result, elapsed, Some(metrics)); + print_sync(&result, elapsed, Some(metrics), args.timings); } Ok(()) }