Skip to content

Commit

Permalink
Rollup merge of rust-lang#84783 - jyn514:fmt-one, r=Mark-Simulacrum
Browse files Browse the repository at this point in the history
Allow formatting specific subdirectories

Fixes rust-lang#71094.
  • Loading branch information
JohnTitor authored May 11, 2021
2 parents 5fc8987 + dadcb05 commit 7e827e9
Show file tree
Hide file tree
Showing 4 changed files with 19 additions and 7 deletions.
3 changes: 2 additions & 1 deletion src/bootstrap/flags.rs
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ pub enum Subcommand {
paths: Vec<PathBuf>,
},
Format {
paths: Vec<PathBuf>,
check: bool,
},
Doc {
Expand Down Expand Up @@ -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" => {
Expand Down
17 changes: 14 additions & 3 deletions src/bootstrap/format.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
Expand Down Expand Up @@ -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
Expand Down
4 changes: 2 additions & 2 deletions src/bootstrap/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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 {
Expand Down
2 changes: 1 addition & 1 deletion src/bootstrap/test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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(), &[]);
}
}

Expand Down

0 comments on commit 7e827e9

Please sign in to comment.