diff --git a/src/bin/main.rs b/src/bin/main.rs index 00a582cb3cb9..c903ba18561d 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -91,6 +91,7 @@ fn make_opts() -> Options { let mut opts = Options::new(); // Sorted in alphabetical order. + opts.optflag("", "backup", "Backup any modified files."); opts.optflag( "", "check", diff --git a/src/config/options.rs b/src/config/options.rs index be3aa1f13d42..b3c0acb854e3 100644 --- a/src/config/options.rs +++ b/src/config/options.rs @@ -368,7 +368,11 @@ impl CliOptions { return Err(format_err!("Invalid to set write-mode and `--check`")); } if let Ok(write_mode) = WriteMode::from_str(write_mode) { - options.write_mode = Some(write_mode); + if write_mode == WriteMode::Overwrite && matches.opt_present("backup") { + options.write_mode = Some(WriteMode::Replace); + } else { + options.write_mode = Some(write_mode); + } } else { return Err(format_err!( "Invalid write-mode: {}, expected one of {}", diff --git a/src/lib.rs b/src/lib.rs index 98983da1164a..e30f4d586bda 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -68,7 +68,7 @@ pub use config::{file_lines, load_config, Config, Verbosity, WriteMode}; pub type FmtResult = std::result::Result; -pub const WRITE_MODE_LIST: &str = "[replace|overwrite|display|plain|diff|coverage|checkstyle]"; +pub const WRITE_MODE_LIST: &str = "[overwrite|display|plain|diff|coverage|checkstyle]"; #[macro_use] mod utils;