From cf4f17d510ae5fc9d2f1a093c9e69a93149c7683 Mon Sep 17 00:00:00 2001 From: calebcartwright Date: Mon, 24 Jun 2019 22:00:32 -0500 Subject: [PATCH] fix: run in sub dirs/workspace member dirs --- src/cargo-fmt/main.rs | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/src/cargo-fmt/main.rs b/src/cargo-fmt/main.rs index 3c4d1c08b08..9a20b6374ab 100644 --- a/src/cargo-fmt/main.rs +++ b/src/cargo-fmt/main.rs @@ -252,12 +252,25 @@ fn get_targets_root_only(targets: &mut BTreeSet) -> Result<(), io::Error let workspace_root_path = PathBuf::from(&metadata.workspace_root).canonicalize()?; let in_workspace_root = workspace_root_path == current_dir; - for package in metadata.packages { - if in_workspace_root || PathBuf::from(&package.manifest_path) == current_dir_manifest { - for target in package.targets { - targets.insert(Target::from_target(&target)); - } - } + let package_targets = match metadata.packages.len() { + 1 => metadata.packages.into_iter().next().unwrap().targets, + _ => metadata + .packages + .into_iter() + .filter(|p| { + in_workspace_root + || PathBuf::from(&p.manifest_path) + .canonicalize() + .unwrap_or_default() + == current_dir_manifest + }) + .map(|p| p.targets) + .flatten() + .collect(), + }; + + for target in package_targets { + targets.insert(Target::from_target(&target)); } Ok(())