diff options
-rw-r--r-- | config_macros.rs | 63 |
1 files changed, 36 insertions, 27 deletions
diff --git a/config_macros.rs b/config_macros.rs index 7ce5a0ce..7e1cf49d 100644 --- a/config_macros.rs +++ b/config_macros.rs @@ -153,33 +153,42 @@ use super::*; } } - /* - let mut rustfmt = Command::new("rustfmt") - .stdin(Stdio::piped()) - .stdout(Stdio::piped()) - .stderr(Stdio::piped()) - .spawn() - .expect("failed to execute rustfmt"); - - { - // limited borrow of stdin - let stdin = rustfmt - .stdin - .as_mut() - .expect("failed to get rustfmt stdin"); - stdin - .write_all(output_string.as_bytes()) - .expect("failed to write to rustfmit stdin"); - } + let rustfmt_closure = move |output_file: &mut File, output_string: &str| { + let mut rustfmt = Command::new("rustfmt") + .stdin(Stdio::piped()) + .stdout(Stdio::piped()) + .stderr(Stdio::piped()) + .spawn() + .map_err(|err| format!("failed to execute rustfmt {}", err))?; + + { + // limited borrow of stdin + let stdin = rustfmt + .stdin + .as_mut() + .ok_or("failed to get rustfmt stdin")?; + stdin + .write_all(output_string.as_bytes()) + .map_err(|err| format!("failed to write to rustfmt stdin {}", err))?; + } - let output = rustfmt - .wait_with_output() - .expect("failed to wait on rustfmt child"); - if !output.stderr.is_empty() { - panic!(format!("{}", String::from_utf8_lossy(&output.stderr))); - } + let output = rustfmt + .wait_with_output() + .map_err(|err| format!("failed to wait on rustfmt child {}", err))?; + if !output.stderr.is_empty() { + return Err(format!( + "rustfmt invocation replied with: `{}`", + String::from_utf8_lossy(&output.stderr) + )); + } - output_file.write_all(&output.stdout).unwrap(); - */ - output_file.write_all(output_string.as_bytes()).unwrap(); + output_file + .write_all(&output.stdout) + .expect("failed to write to src/conf/overrides.rs"); + Ok(()) + }; + if let Err(err) = rustfmt_closure(&mut output_file, &output_string) { + println!("Tried rustfmt on overrides module, got error: {}", err); + output_file.write_all(output_string.as_bytes()).unwrap(); + } } |