diff options
| author | Yuki Okushi <jtitor@2k36.org> | 2021-05-11 09:28:04 +0900 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-05-11 09:28:04 +0900 |
| commit | 7e827e936bbf0bcbe071fc6e506f23014dbe71bd (patch) | |
| tree | 3c1ad0a589fd50bf1478612eb608703cf6958cc4 | |
| parent | 5fc898782c3a5290ac1f8b8be025b0a73f33186e (diff) | |
| parent | dadcb0550d41c343988310ee1946d8dd8f477008 (diff) | |
| download | rust-7e827e936bbf0bcbe071fc6e506f23014dbe71bd.tar.gz rust-7e827e936bbf0bcbe071fc6e506f23014dbe71bd.zip | |
Rollup merge of #84783 - jyn514:fmt-one, r=Mark-Simulacrum
Allow formatting specific subdirectories Fixes https://github.com/rust-lang/rust/issues/71094.
| -rw-r--r-- | src/bootstrap/flags.rs | 3 | ||||
| -rw-r--r-- | src/bootstrap/format.rs | 17 | ||||
| -rw-r--r-- | src/bootstrap/lib.rs | 4 | ||||
| -rw-r--r-- | src/bootstrap/test.rs | 2 |
4 files changed, 19 insertions, 7 deletions
diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index d961e067db3..80a60c79edf 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -91,6 +91,7 @@ pub enum Subcommand { paths: Vec<PathBuf>, }, Format { + paths: Vec<PathBuf>, check: bool, }, Doc { @@ -581,7 +582,7 @@ Arguments: Subcommand::Clean { all: matches.opt_present("all") } } - "fmt" => Subcommand::Format { check: matches.opt_present("check") }, + "fmt" => Subcommand::Format { check: matches.opt_present("check"), paths }, "dist" => Subcommand::Dist { paths }, "install" => Subcommand::Install { paths }, "run" | "r" => { diff --git a/src/bootstrap/format.rs b/src/bootstrap/format.rs index d21e3408144..2408344487b 100644 --- a/src/bootstrap/format.rs +++ b/src/bootstrap/format.rs @@ -42,7 +42,7 @@ struct RustfmtConfig { ignore: Vec<String>, } -pub fn format(build: &Build, check: bool) { +pub fn format(build: &Build, check: bool, paths: &[PathBuf]) { if build.config.dry_run { return; } @@ -118,8 +118,19 @@ pub fn format(build: &Build, check: bool) { .to_path_buf(); let src = build.src.clone(); let (tx, rx): (SyncSender<PathBuf>, _) = std::sync::mpsc::sync_channel(128); - let walker = - WalkBuilder::new(src.clone()).types(matcher).overrides(ignore_fmt).build_parallel(); + let walker = match paths.get(0) { + Some(first) => { + let mut walker = WalkBuilder::new(first); + for path in &paths[1..] { + walker.add(path); + } + walker + } + None => WalkBuilder::new(src.clone()), + } + .types(matcher) + .overrides(ignore_fmt) + .build_parallel(); // there is a lot of blocking involved in spawning a child process and reading files to format. // spawn more processes than available concurrency to keep the CPU busy diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index 24da44b933a..2960dd3df6b 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -478,8 +478,8 @@ impl Build { job::setup(self); } - if let Subcommand::Format { check } = self.config.cmd { - return format::format(self, check); + if let Subcommand::Format { check, paths } = &self.config.cmd { + return format::format(self, *check, &paths); } if let Subcommand::Clean { all } = self.config.cmd { diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index df467bebe74..78163651158 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -889,7 +889,7 @@ help: to skip test's attempt to check tidiness, pass `--exclude src/tools/tidy` ); std::process::exit(1); } - crate::format::format(&builder.build, !builder.config.cmd.bless()); + crate::format::format(&builder.build, !builder.config.cmd.bless(), &[]); } } |
