diff options
| author | Nick Cameron <ncameron@mozilla.com> | 2018-04-20 13:42:27 +1200 |
|---|---|---|
| committer | Nick Cameron <ncameron@mozilla.com> | 2018-04-20 13:42:27 +1200 |
| commit | 7a886e8fe5f3551b9614c8131709267256eaa229 (patch) | |
| tree | 12beeed57d1c07ff8811fac4efd2eebb8f968ee7 /src | |
| parent | a73f14aa9563738b9de12c612e6add412a36dd40 (diff) | |
Refactoring around write mode in main
Diffstat (limited to 'src')
| -rw-r--r-- | src/bin/main.rs | 34 | ||||
| -rw-r--r-- | src/config/options.rs | 2 | ||||
| -rw-r--r-- | src/filemap.rs | 1 |
3 files changed, 15 insertions, 22 deletions
diff --git a/src/bin/main.rs b/src/bin/main.rs index 9411ccde41f..abc313ab8ed 100644 --- a/src/bin/main.rs +++ b/src/bin/main.rs @@ -35,11 +35,9 @@ const WRITE_MODE_LIST: &str = "[replace|overwrite|display|plain|diff|coverage|ch fn main() { env_logger::init(); let opts = make_opts(); - // Only handles arguments passed in through the CLI. - let write_mode = determine_write_mode(&opts); let exit_code = match execute(&opts) { - Ok(summary) => { + Ok((write_mode, summary)) => { if summary.has_operational_errors() || summary.has_diff && write_mode == WriteMode::Check || summary.has_parsing_errors() || summary.has_formatting_errors() @@ -248,22 +246,22 @@ fn make_opts() -> Options { opts } -fn execute(opts: &Options) -> FmtResult<Summary> { +fn execute(opts: &Options) -> FmtResult<(WriteMode, Summary)> { let matches = opts.parse(env::args().skip(1))?; match determine_operation(&matches)? { Operation::Help => { print_usage_to_stdout(opts, ""); Summary::print_exit_codes(); - Ok(Summary::default()) + Ok((WriteMode::None, Summary::default())) } Operation::Version => { print_version(); - Ok(Summary::default()) + Ok((WriteMode::None, Summary::default())) } Operation::ConfigHelp => { Config::print_docs(&mut stdout(), matches.opt_present("unstable-features")); - Ok(Summary::default()) + Ok((WriteMode::None, Summary::default())) } Operation::ConfigOutputDefault { path } => { let toml = Config::default().all_options().to_toml()?; @@ -273,7 +271,7 @@ fn execute(opts: &Options) -> FmtResult<Summary> { } else { io::stdout().write_all(toml.as_bytes())?; } - Ok(Summary::default()) + Ok((WriteMode::None, Summary::default())) } Operation::Stdin { input, config_path } => { // try to read config from local directory @@ -302,7 +300,7 @@ fn execute(opts: &Options) -> FmtResult<Summary> { checkstyle::output_footer(&mut out, config.write_mode())?; } - Ok(error_summary) + Ok((WriteMode::Plain, error_summary)) } Operation::Format { files, @@ -320,7 +318,7 @@ fn format( config_path: Option<PathBuf>, minimal_config_path: Option<String>, options: CliOptions, -) -> FmtResult<Summary> { +) -> FmtResult<(WriteMode, Summary)> { for f in options.file_lines.files() { match *f { FileName::Real(ref f) if files.contains(f) => {} @@ -343,8 +341,9 @@ fn format( } } + let write_mode = config.write_mode(); let mut out = &mut stdout(); - checkstyle::output_header(&mut out, config.write_mode())?; + checkstyle::output_header(&mut out, write_mode)?; let mut error_summary = Summary::default(); for file in files { @@ -379,7 +378,7 @@ fn format( error_summary.add(run(Input::File(file), &config)); } } - checkstyle::output_footer(&mut out, config.write_mode())?; + checkstyle::output_footer(&mut out, write_mode)?; // If we were given a path via dump-minimal-config, output any options // that were used during formatting as TOML. @@ -389,16 +388,7 @@ fn format( file.write_all(toml.as_bytes())?; } - Ok(error_summary) -} - -fn determine_write_mode(opts: &Options) -> WriteMode { - let matches = opts.parse(env::args().skip(1)).unwrap(); - let options = CliOptions::from_matches(&matches).unwrap(); - match options.write_mode { - Some(m) => m, - None => WriteMode::default(), - } + Ok((write_mode, error_summary)) } fn print_usage_to_stdout(opts: &Options, reason: &str) { diff --git a/src/config/options.rs b/src/config/options.rs index 0bb53f046ac..2992bf48a80 100644 --- a/src/config/options.rs +++ b/src/config/options.rs @@ -186,6 +186,8 @@ configuration_option_enum! { WriteMode: // Checks if a diff can be generated. If so, rustfmt outputs a diff and quits with exit code 1. // This option is designed to be run in CI where a non-zero exit signifies non-standard code formatting. Check, + // Rustfmt shouldn't output anything formatting-like (e.g., emit a help message). + None, } configuration_option_enum! { Color: diff --git a/src/filemap.rs b/src/filemap.rs index ce9134b131e..6d2f5da44de 100644 --- a/src/filemap.rs +++ b/src/filemap.rs @@ -191,6 +191,7 @@ where return Ok(has_diff); } } + WriteMode::None => {} } // when we are not in diff mode, don't indicate differing files |
