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
|
#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
|
||||||
|
}
|
||||||
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue