about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorNick Cameron <ncameron@mozilla.com>2018-05-13 13:18:08 +1200
committerNick Cameron <ncameron@mozilla.com>2018-05-13 13:18:08 +1200
commit8396da188251ae8d6d2970a497ecdf07bf4ef04f (patch)
treee4bd2a8df48fa55dc0fa7be27a107d54164f70de /src
parenta8e7a7c8b8af13e33257c136fa0c9e88e7e216ca (diff)
Add `--backup` flag
Diffstat (limited to 'src')
-rw-r--r--src/bin/main.rs1
-rw-r--r--src/config/options.rs6
-rw-r--r--src/lib.rs2
3 files changed, 7 insertions, 2 deletions
diff --git a/src/bin/main.rs b/src/bin/main.rs
index 00a582cb3cb..c903ba18561 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 be3aa1f13d4..b3c0acb854e 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 98983da1164..e30f4d586bd 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<T> = std::result::Result<T, failure::Error>;
 
-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;