From 53dcb0d09d5fd2138764148433962309f7c6e1c8 Mon Sep 17 00:00:00 2001 From: Rob Tsuk Date: Tue, 6 Mar 2018 07:28:08 -0700 Subject: [PATCH 1/3] Restore cargo fmt behavior in workspaces Previously, cargo fmt invoked without parameters would only format the crate in the current directory, even if the crate was part of a workspace. This patch restores that behavior. --- src/cargo-fmt/main.rs | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/cargo-fmt/main.rs b/src/cargo-fmt/main.rs index 1acad99688a..02c19525edb 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()?; + let current_dir_manifest = current_dir.join("Cargo.toml"); + let workspace_root_path = PathBuf::from(&metadata.workspace_root); + 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)); + } } } From ba10a4c48dc1f586863c56e36ef71201d3bea1db Mon Sep 17 00:00:00 2001 From: Rob Tsuk Date: Thu, 8 Mar 2018 07:26:03 -0700 Subject: [PATCH 2/3] Canonicalise the paths --- src/cargo-fmt/main.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/cargo-fmt/main.rs b/src/cargo-fmt/main.rs index 02c19525edb..855a45568b7 100644 --- a/src/cargo-fmt/main.rs +++ b/src/cargo-fmt/main.rs @@ -249,9 +249,9 @@ 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()?; + 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); + let workspace_root_path = PathBuf::from(&metadata.workspace_root).canonicalize()?; let in_workspace_root = workspace_root_path == current_dir; for package in metadata.packages { From a1f979678878d893fd29959e7c892682431bbe4c Mon Sep 17 00:00:00 2001 From: Rob Tsuk Date: Fri, 9 Mar 2018 07:40:39 -0700 Subject: [PATCH 3/3] Specify required version of cargo_metadata --- Cargo.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Cargo.toml b/Cargo.toml index 3be0c4ff7a8..17f53c50f4b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,7 +47,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"