diff --git a/src/bin/cargo/commands/report.rs b/src/bin/cargo/commands/report.rs index f2dda0d28c0..806b8cfda00 100644 --- a/src/bin/cargo/commands/report.rs +++ b/src/bin/cargo/commands/report.rs @@ -30,6 +30,7 @@ pub fn cli() -> Command { .subcommand( subcommand("timings") .about("Reports the build timings of previous builds (unstable)") + .arg_manifest_path() .arg(flag("open", "Opens the timing report in a browser")), ) } @@ -46,7 +47,8 @@ pub fn exec(gctx: &mut GlobalContext, args: &ArgMatches) -> CliResult { gctx.cli_unstable().build_analysis, )?; let opts = timings_opts(gctx, args)?; - ops::report_timings(gctx, opts)?; + let ws = args.workspace(gctx).ok(); + ops::report_timings(gctx, ws.as_ref(), opts)?; Ok(()) } Some((cmd, _)) => { diff --git a/src/cargo/ops/cargo_report/timings.rs b/src/cargo/ops/cargo_report/timings.rs index be62e39d3a9..e68f43aedc9 100644 --- a/src/cargo/ops/cargo_report/timings.rs +++ b/src/cargo/ops/cargo_report/timings.rs @@ -28,7 +28,6 @@ use crate::core::compiler::timings::report::compute_concurrency; use crate::core::compiler::timings::report::round_to_centisecond; use crate::core::compiler::timings::report::write_html; use crate::util::BuildLogger; -use crate::util::important_paths::find_root_manifest_for_wd; use crate::util::log_message::FingerprintStatus; use crate::util::log_message::LogMessage; use crate::util::log_message::Target; @@ -49,11 +48,12 @@ struct UnitEntry { rmeta_time: Option, } -pub fn report_timings(gctx: &GlobalContext, opts: ReportTimingsOptions<'_>) -> CargoResult<()> { - let ws = find_root_manifest_for_wd(gctx.cwd()) - .ok() - .and_then(|manifest_path| Workspace::new(&manifest_path, gctx).ok()); - let Some((log, run_id)) = select_log_file(gctx, ws.as_ref())? else { +pub fn report_timings( + gctx: &GlobalContext, + ws: Option<&Workspace<'_>>, + opts: ReportTimingsOptions<'_>, +) -> CargoResult<()> { + let Some((log, run_id)) = select_log_file(gctx, ws)? else { let title_extra = if let Some(ws) = ws { format!(" for workspace at `{}`", ws.root().display()) } else { diff --git a/tests/testsuite/cargo_report_timings/help/stdout.term.svg b/tests/testsuite/cargo_report_timings/help/stdout.term.svg index 9c80b199c7f..3d061da81ab 100644 --- a/tests/testsuite/cargo_report_timings/help/stdout.term.svg +++ b/tests/testsuite/cargo_report_timings/help/stdout.term.svg @@ -1,4 +1,4 @@ - +