David Tolnay | b2188a6 | 2019-05-09 11:42:44 -0700 | [diff] [blame] | 1 | use crate::error::Result; |
David Tolnay | 1022712 | 2019-02-15 20:53:45 -0800 | [diff] [blame] | 2 | use std::fs; |
Carl Lerche | 9a7d588 | 2019-02-15 12:27:04 -0800 | [diff] [blame] | 3 | use std::path::Path; |
David Tolnay | b2188a6 | 2019-05-09 11:42:44 -0700 | [diff] [blame] | 4 | use syn_codegen::Definitions; |
Carl Lerche | 9a7d588 | 2019-02-15 12:27:04 -0800 | [diff] [blame] | 5 | |
David Tolnay | b2188a6 | 2019-05-09 11:42:44 -0700 | [diff] [blame] | 6 | pub fn generate(defs: &Definitions) -> Result<()> { |
| 7 | let mut j = serde_json::to_string_pretty(&defs)?; |
David Tolnay | 12c027f | 2019-02-28 23:39:57 -0800 | [diff] [blame] | 8 | j.push('\n'); |
| 9 | |
David Tolnay | b2188a6 | 2019-05-09 11:42:44 -0700 | [diff] [blame] | 10 | let check: Definitions = serde_json::from_str(&j)?; |
David Tolnay | 1022712 | 2019-02-15 20:53:45 -0800 | [diff] [blame] | 11 | assert_eq!(*defs, check); |
| 12 | |
Carl Lerche | 9a7d588 | 2019-02-15 12:27:04 -0800 | [diff] [blame] | 13 | let codegen_root = Path::new(env!("CARGO_MANIFEST_DIR")); |
David Tolnay | 07b2cca | 2019-02-15 18:58:27 -0800 | [diff] [blame] | 14 | let json_path = codegen_root.join("../syn.json"); |
David Tolnay | b2188a6 | 2019-05-09 11:42:44 -0700 | [diff] [blame] | 15 | fs::write(json_path, j)?; |
| 16 | |
| 17 | Ok(()) |
Carl Lerche | 9a7d588 | 2019-02-15 12:27:04 -0800 | [diff] [blame] | 18 | } |