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