| 449 | } |
| 450 | |
| 451 | fn parse_trace_config<'a>( |
| 452 | config: &'a cfg::Config, |
| 453 | workspace: &'a Workspace, |
| 454 | executable_package: &'a Package, |
| 455 | ) -> Result<Vec<(&'a Package, cfg::Trace)>> { |
| 456 | // All package is set to trace none by default; except the executable package set to trace full |
| 457 | let mut trace_packages = workspace |
| 458 | .packages |
| 459 | .iter() |
| 460 | .fold(BTreeMap::new(), |mut acc, package| { |
| 461 | let trace = if package.name == executable_package.name { |
| 462 | cfg::Trace::Full |
| 463 | } else { |
| 464 | cfg::Trace::None |
| 465 | }; |
| 466 | acc.insert(package.name.as_str(), (package, trace)); |
| 467 | acc |
| 468 | }); |
| 469 | // Parse trace config |
| 470 | for (package_name, member) in config.workspace.members.iter() { |
| 471 | if let Some(package) = workspace.find_package(package_name) { |
| 472 | trace_packages.insert(package.name.as_str(), (package, member.trace)); |
| 473 | } |
| 474 | } |
| 475 | let values: Vec<_> = trace_packages.into_values().collect(); |
| 476 | |
| 477 | log::info!("trace_packages\n{:#?}", values); |
| 478 | |
| 479 | for (package, trace) in values.iter() { |
| 480 | let package_name = package.name.as_str(); |
| 481 | let trace_str = trace.to_str(); |
| 482 | console::status( |
| 483 | "Tracing", |
| 484 | &format!("{package_name} = {{ trace = \"{trace_str}\" }}"), |
| 485 | ); |
| 486 | } |
| 487 | |
| 488 | Ok(values) |
| 489 | } |
| 490 | |
| 491 | async fn cache_workspace(workspace: &Workspace) -> Result<()> { |
| 492 | let workspace_root_dir = &workspace.root_dir; |