blob: e202bbec39e392a8293d54dc0c4bef295acc3f8c [file] [log] [blame]
David Tolnayb2188a62019-05-09 11:42:44 -07001use crate::error::Result;
David Tolnay10227122019-02-15 20:53:45 -08002use std::fs;
Carl Lerche9a7d5882019-02-15 12:27:04 -08003use std::path::Path;
David Tolnayb2188a62019-05-09 11:42:44 -07004use syn_codegen::Definitions;
Carl Lerche9a7d5882019-02-15 12:27:04 -08005
David Tolnayb2188a62019-05-09 11:42:44 -07006pub fn generate(defs: &Definitions) -> Result<()> {
7 let mut j = serde_json::to_string_pretty(&defs)?;
David Tolnay12c027f2019-02-28 23:39:57 -08008 j.push('\n');
9
David Tolnayb2188a62019-05-09 11:42:44 -070010 let check: Definitions = serde_json::from_str(&j)?;
David Tolnay10227122019-02-15 20:53:45 -080011 assert_eq!(*defs, check);
12
Carl Lerche9a7d5882019-02-15 12:27:04 -080013 let codegen_root = Path::new(env!("CARGO_MANIFEST_DIR"));
David Tolnay07b2cca2019-02-15 18:58:27 -080014 let json_path = codegen_root.join("../syn.json");
David Tolnayb2188a62019-05-09 11:42:44 -070015 fs::write(json_path, j)?;
16
17 Ok(())
Carl Lerche9a7d5882019-02-15 12:27:04 -080018}