Add a codegen error type to avoid unwraps
diff --git a/codegen/src/json.rs b/codegen/src/json.rs
index 8e45308..e202bbe 100644
--- a/codegen/src/json.rs
+++ b/codegen/src/json.rs
@@ -1,16 +1,18 @@
-use syn_codegen::Definitions;
-
+use crate::error::Result;
use std::fs;
use std::path::Path;
+use syn_codegen::Definitions;
-pub fn generate(defs: &Definitions) {
- let mut j = serde_json::to_string_pretty(&defs).unwrap();
+pub fn generate(defs: &Definitions) -> Result<()> {
+ let mut j = serde_json::to_string_pretty(&defs)?;
j.push('\n');
- let check: Definitions = serde_json::from_str(&j).unwrap();
+ let check: Definitions = serde_json::from_str(&j)?;
assert_eq!(*defs, check);
let codegen_root = Path::new(env!("CARGO_MANIFEST_DIR"));
let json_path = codegen_root.join("../syn.json");
- fs::write(json_path, j).unwrap();
+ fs::write(json_path, j)?;
+
+ Ok(())
}