diff --git a/src/cargo-fmt/main.rs b/src/cargo-fmt/main.rs index a686e91b6947..59b76a542792 100644 --- a/src/cargo-fmt/main.rs +++ b/src/cargo-fmt/main.rs @@ -79,7 +79,7 @@ fn execute() -> i32 { } if matches.opt_present("version") { - return handle_command_status(get_version(verbosity), &opts); + return handle_command_status(get_version(), &opts); } let strategy = CargoFmtStrategy::from_matches(&matches); @@ -122,8 +122,19 @@ fn handle_command_status(status: Result, opts: &getopts::Options } } -fn get_version(verbosity: Verbosity) -> Result { - run_rustfmt(&BTreeSet::new(), &[String::from("--version")], verbosity) +fn get_version() -> Result { + let mut status = vec![]; + let mut command = Command::new("rustfmt") + .stdout(std::process::Stdio::inherit()) + .args(&[String::from("--version")]) + .spawn()?; + status.push(command.wait()?); + + Ok(status + .iter() + .filter_map(|s| if s.success() { None } else { s.code() }) + .next() + .unwrap_or(SUCCESS)) } fn format_crate(verbosity: Verbosity, strategy: &CargoFmtStrategy) -> Result {