sdk-builder: actually pass on generated tokens
This commit is contained in:
parent
de6ff073dc
commit
dab24aed61
|
@ -843,11 +843,22 @@ pub mod rust {
|
|||
|
||||
#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);
|
||||
log::info!(
|
||||
"generating package \"{pkg_name}\" with {} types..",
|
||||
pkg.types.len()
|
||||
);
|
||||
|
||||
let mut pkg_tokens = TokenStream::new();
|
||||
|
||||
for (_id, ty) in &pkg.types {
|
||||
let tokens = match ty {
|
||||
|
@ -857,18 +868,35 @@ pub mod rust {
|
|||
UnrealType::Enum(enum0) => self.generate_enum(enum0)?,
|
||||
};
|
||||
|
||||
println!("{tokens}");
|
||||
pkg_tokens.extend(tokens);
|
||||
}
|
||||
|
||||
quote! {
|
||||
#[cfg(feature = "#pkg_name")]
|
||||
pub mod #pkg_name {
|
||||
#![allow(dead_code, unused_imports, non_snake_case, non_camel_case_types)]
|
||||
let deps = pkg
|
||||
.dependencies
|
||||
.iter()
|
||||
.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
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue