David Tolnay | cec98a7 | 2019-05-08 15:23:19 -0700 | [diff] [blame] | 1 | use proc_macro2::TokenStream; |
David Tolnay | cec98a7 | 2019-05-08 15:23:19 -0700 | [diff] [blame] | 2 | use std::fs::File; |
| 3 | use std::io::Write; |
| 4 | |
| 5 | pub fn write(path: &str, content: TokenStream) { |
| 6 | let mut file = File::create(path).unwrap(); |
| 7 | write!( |
| 8 | file, |
| 9 | "// THIS FILE IS AUTOMATICALLY GENERATED; DO NOT EDIT\n\n" |
| 10 | ) |
| 11 | .unwrap(); |
| 12 | let mut config = rustfmt::Config::default(); |
| 13 | config.set().emit_mode(rustfmt::EmitMode::Stdout); |
| 14 | config.set().verbose(rustfmt::Verbosity::Quiet); |
| 15 | config.set().format_macro_matchers(true); |
| 16 | config.set().normalize_doc_attributes(true); |
| 17 | let mut session = rustfmt::Session::new(config, Some(&mut file)); |
| 18 | session |
| 19 | .format(rustfmt::Input::Text(content.to_string())) |
| 20 | .unwrap(); |
| 21 | } |