diff --git a/Cargo.toml b/Cargo.toml index 72e830143240..e3a0647499ef 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -45,7 +45,7 @@ log = "0.4" env_logger = "0.5" getopts = "0.2" derive-new = "0.5" -cargo_metadata = "0.5" +cargo_metadata = "0.5.1" rustc-ap-syntax = "60.0.0" rustc-ap-rustc_errors = "60.0.0" diff --git a/src/cargo-fmt/main.rs b/src/cargo-fmt/main.rs index 1acad99688a2..855a45568b7e 100644 --- a/src/cargo-fmt/main.rs +++ b/src/cargo-fmt/main.rs @@ -249,10 +249,16 @@ fn get_targets(strategy: &CargoFmtStrategy) -> Result, io::Error fn get_targets_root_only(targets: &mut HashSet) -> Result<(), io::Error> { let metadata = get_cargo_metadata(None)?; + let current_dir = env::current_dir()?.canonicalize()?; + let current_dir_manifest = current_dir.join("Cargo.toml"); + let workspace_root_path = PathBuf::from(&metadata.workspace_root).canonicalize()?; + let in_workspace_root = workspace_root_path == current_dir; for package in metadata.packages { - for target in package.targets { - targets.insert(Target::from_target(&target)); + if in_workspace_root || PathBuf::from(&package.manifest_path) == current_dir_manifest { + for target in package.targets { + targets.insert(Target::from_target(&target)); + } } }