sdk-builder: actually pass on generated tokens

This commit is contained in:
Janis 2023-06-29 16:26:39 +02:00
parent de6ff073dc
commit dab24aed61

View file

@ -843,11 +843,22 @@ pub mod rust {
#field_trait #field_trait
}; };
todo!()
Ok(tokens)
} }
fn generate_package(&self, pkg: &ProcessedPackage) -> anyhow::Result<()> { fn generate_package(
&self,
pkg: &ProcessedPackage,
feature_gate: bool,
) -> anyhow::Result<TokenStream> {
let pkg_name = canonicalize_name(&pkg.name); let pkg_name = canonicalize_name(&pkg.name);
log::info!(
"generating package \"{pkg_name}\" with {} types..",
pkg.types.len()
);
let mut pkg_tokens = TokenStream::new();
for (_id, ty) in &pkg.types { for (_id, ty) in &pkg.types {
let tokens = match ty { let tokens = match ty {
@ -857,18 +868,35 @@ pub mod rust {
UnrealType::Enum(enum0) => self.generate_enum(enum0)?, UnrealType::Enum(enum0) => self.generate_enum(enum0)?,
}; };
println!("{tokens}"); pkg_tokens.extend(tokens);
} }
quote! { let deps = pkg
#[cfg(feature = "#pkg_name")] .dependencies
pub mod #pkg_name { .iter()
#![allow(dead_code, unused_imports, non_snake_case, non_camel_case_types)] .filter_map(|id| self.sdk.packages.get(id))
.map(|package| format!("`{}`", package.name))
.join(",");
} let doc_msg = format!("Package `{pkg_name}` depends on the features {deps}.");
let feature_gate = if feature_gate {
Some(quote! {
#![doc = #doc_msg]
#![cfg(feature = "#pkg_name")]
})
} else {
None
}; };
todo!() Ok(quote! {
pub mod #pkg_name {
#feature_gate
#![allow(dead_code, unused_imports, non_snake_case, non_camel_case_types)]
#pkg_tokens
}
})
} }
} }
} }