Skip to content

Commit eeac0de

Browse files
committed
Print an error instead of panic on invalid write-mode
1 parent 2159c8b commit eeac0de

File tree

1 file changed

+12
-8
lines changed

1 file changed

+12
-8
lines changed

src/bin/rustfmt.rs

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -110,17 +110,18 @@ fn match_cli_path_or_file(config_path: Option<PathBuf>,
110110
resolve_config(input_file)
111111
}
112112

113-
fn update_config(config: &mut Config, matches: &Matches) {
113+
fn update_config(config: &mut Config, matches: &Matches) -> Result<(), String> {
114114
config.verbose = matches.opt_present("verbose");
115115
config.skip_children = matches.opt_present("skip-children");
116116

117-
let write_mode = matches.opt_str("write-mode").map(|ref s| {
118-
WriteMode::from_str(s).expect(&format!("Invalid write-mode: {}", s))
119-
});
120-
121-
if let Some(write_mode) = write_mode {
122-
config.write_mode = write_mode;
117+
if let Some(write_mode) = matches.opt_str("write-mode") {
118+
match WriteMode::from_str(&write_mode) {
119+
Ok(write_mode) => config.write_mode = write_mode,
120+
Err(_) => return Err(format!("Invalid write-mode: {}", write_mode)),
121+
}
123122
}
123+
124+
Ok(())
124125
}
125126

126127
fn execute() -> i32 {
@@ -210,7 +211,10 @@ fn execute() -> i32 {
210211
config = config_tmp;
211212
}
212213

213-
update_config(&mut config, &matches);
214+
if let Err(e) = update_config(&mut config, &matches) {
215+
print_usage(&opts, &e);
216+
return 1;
217+
}
214218
run(&file, &config);
215219
}
216220
0

0 commit comments

Comments
 (0)