From 85ef4638b65a0443fca54f3cf6af55df923b1923 Mon Sep 17 00:00:00 2001 From: Seiichi Uchida Date: Wed, 20 Dec 2017 22:46:24 +0900 Subject: [PATCH] Make 'cargo fmt' formats every workspace member --- CHANGELOG.md | 4 ++++ src/bin/cargo-fmt.rs | 11 ++++++++++- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9e399017f0d..0cf1ec76749 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ ## [Unreleased] +### Changed + +- `cargo fmt` will format every workspace member. + ## [0.3.2] 2017-12-15 ### Changed diff --git a/src/bin/cargo-fmt.rs b/src/bin/cargo-fmt.rs index 3916b52fe5f..e45521de30b 100644 --- a/src/bin/cargo-fmt.rs +++ b/src/bin/cargo-fmt.rs @@ -240,7 +240,7 @@ fn get_targets_root_only(targets: &mut HashSet) -> Result<(), io::Error> for package in metadata.packages { for target in package.targets { - if target.name == package.name { + if is_target_workspace_members(&target.name, &metadata.workspace_members) { targets.insert(Target::from_target(&target)); } } @@ -249,6 +249,15 @@ fn get_targets_root_only(targets: &mut HashSet) -> Result<(), io::Error> Ok(()) } +fn is_target_workspace_members(target: &str, workspace_members: &[String]) -> bool { + workspace_members.iter().any(|member| { + member + .split_whitespace() + .nth(0) + .map_or(false, |name| name == target) + }) +} + fn get_targets_recursive( manifest_path: Option<&Path>, mut targets: &mut HashSet,