use arbitrary::{Result, Unstructured};
use wit_parser::Resolve;
mod config;
pub use self::config::Config;
mod generate;
pub fn smith(config: &Config, u: &mut Unstructured<'_>) -> Result<Vec<u8>> {
let pkgs = generate::Generator::new(config.clone()).gen(u)?;
let mut resolve = Resolve::default();
let mut last = None;
for pkg in pkgs {
let unresolved = pkg.sources.parse().unwrap();
let id = match resolve.push(unresolved) {
Ok(id) => id,
Err(e) => panic!("bad wit parse: {e:?}"),
};
last = Some(id);
}
let pkg = last.unwrap();
Ok(wit_component::encode(&resolve, pkg).expect("failed to encode WIT document"))
}