diff --git a/src/main.rs b/src/main.rs index 64236d5..cfc8c41 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,6 +1,8 @@ -use std::{collections::HashMap, fs}; +use std::fs::DirBuilder; +use std::io::Write; +use std::{collections::HashMap, fs, io::BufWriter}; -use anyhow::Result; +use anyhow::{anyhow, Context, Result}; use endcap_sl_software_ri_generator::{generator::CodeGen, types}; use itertools::Itertools; @@ -25,10 +27,30 @@ fn main() -> Result<()> { println!("==========================================="); let files = register_map.generate_register_interface(None, None, HashMap::new())?; - println!("{:#?}", files); + // println!("{:#?}", files); for filepath in files.keys().sorted() { println!("{}", filepath.display()); } + if !std::fs::read_dir("register_interface") + .context("register_interface not found")? + .collect_vec() + .is_empty() + { + return Err(anyhow!("dir out is not empty")); + }; + for (file, code) in files { + DirBuilder::new() + .recursive(true) + .create(file.parent().context("no parent")?)?; + let file = fs::OpenOptions::new() + .create(true) + .truncate(true) + .write(true) + .open(file) + .context("opening file")?; + let mut writer = BufWriter::new(file); + write!(writer, "{}", code)?; + } Ok(()) }