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(())
 }