diff --git a/src/lib.rs b/src/lib.rs index 72e5f08..7e7b94f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -10,10 +10,15 @@ mod rust; mod util; use std::error::Error; -use std::fmt::Display; use std::path::Path; use configuration::Config; +pub fn read_config_file>( + config_file: P, +) -> Result> { + configuration::parse(config_file) +} + pub fn generate_bindings(config: &Config) -> Result<(), Box> { cpp::write_header(config)?; cpp::write_cpp(config)?; @@ -22,11 +27,11 @@ pub fn generate_bindings(config: &Config) -> Result<(), Box> { Ok(()) } -pub fn generate_bindings_from_config_file + Display>( +pub fn generate_bindings_from_config_file>( config_file: P, overwrite_implementation: bool, ) -> Result<(), Box> { - let mut config = configuration::parse(config_file)?; + let mut config = read_config_file(config_file)?; if overwrite_implementation { config.overwrite_implementation = true; } diff --git a/src/util.rs b/src/util.rs index def551f..e0e1454 100644 --- a/src/util.rs +++ b/src/util.rs @@ -8,6 +8,7 @@ pub fn write_if_different>(path: P, contents: &[u8]) -> Result<() if old_contents.map(|c| c == contents).unwrap_or(false) { Ok(()) } else { + let _ = fs::create_dir_all(path.as_ref().parent().unwrap()); fs::write(path, contents) } }