diff --git a/CHANGELOG.md b/CHANGELOG.md index 416203b823a..903b6f121e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,20 @@ ## [Unreleased] +## [1.4.22] 2020-10-04 + +### Changed + +- Update `rustc-ap-*` crates to v679.0.0 +- Add config option to allow control of leading match arm pipes +- Support `RUSTFMT` environment variable in `cargo fmt` to run specified `rustfmt` instance + + +### Fixed + +- Fix preservation of type aliases within extern blocks + + ## [1.4.9] 2019-10-07 ### Changed diff --git a/Cargo.lock b/Cargo.lock index cf043471bf9..e367285fd09 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1283,7 +1283,7 @@ dependencies = [ [[package]] name = "rustfmt-nightly" -version = "1.4.21" +version = "1.4.22" dependencies = [ "annotate-snippets 0.6.1", "anyhow", diff --git a/Cargo.toml b/Cargo.toml index 07edeb6b7ec..01592e3b616 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "rustfmt-nightly" -version = "1.4.21" +version = "1.4.22" authors = ["Nicholas Cameron ", "The Rustfmt developers"] description = "Tool to find and fix Rust formatting issues" repository = "https://github.com/rust-lang/rustfmt" diff --git a/config_proc_macro/src/utils.rs b/config_proc_macro/src/utils.rs index fec6a8e4907..5b68d274849 100644 --- a/config_proc_macro/src/utils.rs +++ b/config_proc_macro/src/utils.rs @@ -24,8 +24,15 @@ pub fn is_unit(v: &syn::Variant) -> bool { pub fn debug_with_rustfmt(input: &TokenStream) { use std::io::Write; use std::process::{Command, Stdio}; + use std::env; + use std::ffi::OsStr; - let mut child = Command::new("rustfmt") + let rustfmt_var = env::var_os("RUSTFMT"); + let rustfmt = match &rustfmt_var { + Some(rustfmt) => rustfmt, + None => OsStr::new("rustfmt"), + }; + let mut child = Command::new(rustfmt) .stdin(Stdio::piped()) .stdout(Stdio::piped()) .spawn() diff --git a/src/cargo-fmt/main.rs b/src/cargo-fmt/main.rs index 233a0f1d145..22aeceeb53b 100644 --- a/src/cargo-fmt/main.rs +++ b/src/cargo-fmt/main.rs @@ -7,6 +7,7 @@ use cargo_metadata; use std::cmp::Ordering; use std::collections::{BTreeMap, BTreeSet}; use std::env; +use std::ffi::OsStr; use std::fs; use std::hash::{Hash, Hasher}; use std::io::{self, Write}; @@ -129,6 +130,15 @@ fn execute() -> i32 { } } +fn rustfmt_command() -> Command { + let rustfmt_var = env::var_os("RUSTFMT"); + let rustfmt = match &rustfmt_var { + Some(rustfmt) => rustfmt, + None => OsStr::new("rustfmt"), + }; + Command::new(rustfmt) +} + fn convert_message_format_to_rustfmt_args( message_format: &str, rustfmt_args: &mut Vec, @@ -205,7 +215,7 @@ fn handle_command_status(status: Result) -> i32 { } fn get_rustfmt_info(args: &[String]) -> Result { - let mut command = Command::new("rustfmt") + let mut command = rustfmt_command() .stdout(std::process::Stdio::inherit()) .args(args) .spawn() @@ -484,7 +494,7 @@ fn run_rustfmt( println!(); } - let mut command = Command::new("rustfmt") + let mut command = rustfmt_command() .stdout(stdout) .args(files) .args(&["--edition", edition]) diff --git a/src/format-diff/main.rs b/src/format-diff/main.rs index a73d2da4d03..8a8bb9356ca 100644 --- a/src/format-diff/main.rs +++ b/src/format-diff/main.rs @@ -13,6 +13,8 @@ use serde_json as json; use thiserror::Error; use std::collections::HashSet; +use std::env; +use std::ffi::OsStr; use std::io::{self, BufRead}; use std::process; @@ -94,7 +96,12 @@ fn run_rustfmt(files: &HashSet, ranges: &[Range]) -> Result<(), FormatDi debug!("Files: {:?}", files); debug!("Ranges: {:?}", ranges); - let exit_status = process::Command::new("rustfmt") + let rustfmt_var = env::var_os("RUSTFMT"); + let rustfmt = match &rustfmt_var { + Some(rustfmt) => rustfmt, + None => OsStr::new("rustfmt"), + }; + let exit_status = process::Command::new(rustfmt) .args(files) .arg("--file-lines") .arg(ranges_as_json)