Skip to content

Commit 0e4a704

Browse files
committed
fix: Correctly emit merged_crd code
1 parent 35d0142 commit 0e4a704

File tree

2 files changed

+25
-15
lines changed

2 files changed

+25
-15
lines changed

crates/stackable-versioned-macros/src/codegen/container/mod.rs

Lines changed: 17 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ impl Container {
5454
pub(crate) fn generate_kubernetes_item(
5555
&self,
5656
version: &VersionDefinition,
57-
) -> Option<(IdentString, TokenStream)> {
57+
) -> Option<(IdentString, String, TokenStream)> {
5858
match self {
5959
Container::Struct(s) => s.generate_kubernetes_item(version),
6060
Container::Enum(_) => None,
@@ -63,14 +63,18 @@ impl Container {
6363

6464
pub(crate) fn generate_kubernetes_merge_crds(
6565
&self,
66-
enum_variants: Vec<IdentString>,
66+
enum_variant_idents: Vec<IdentString>,
67+
enum_variant_strings: Vec<String>,
6768
fn_calls: Vec<TokenStream>,
6869
is_nested: bool,
6970
) -> Option<TokenStream> {
7071
match self {
71-
Container::Struct(s) => {
72-
s.generate_kubernetes_merge_crds(enum_variants, fn_calls, is_nested)
73-
}
72+
Container::Struct(s) => s.generate_kubernetes_merge_crds(
73+
enum_variant_idents,
74+
enum_variant_strings,
75+
fn_calls,
76+
is_nested,
77+
),
7478
Container::Enum(_) => None,
7579
}
7680
}
@@ -122,7 +126,8 @@ impl StandaloneContainer {
122126
let mut tokens = TokenStream::new();
123127

124128
let mut kubernetes_merge_crds_fn_calls = Vec::new();
125-
let mut kubernetes_enum_variants = Vec::new();
129+
let mut kubernetes_enum_variant_idents = Vec::new();
130+
let mut kubernetes_enum_variant_strings = Vec::new();
126131

127132
let mut versions = self.versions.iter().peekable();
128133

@@ -143,10 +148,12 @@ impl StandaloneContainer {
143148

144149
// Generate Kubernetes specific code which is placed outside of the container
145150
// definition.
146-
if let Some((enum_variant, fn_call)) = self.container.generate_kubernetes_item(version)
151+
if let Some((enum_variant_ident, enum_variant_string, fn_call)) =
152+
self.container.generate_kubernetes_item(version)
147153
{
148154
kubernetes_merge_crds_fn_calls.push(fn_call);
149-
kubernetes_enum_variants.push(enum_variant);
155+
kubernetes_enum_variant_idents.push(enum_variant_ident);
156+
kubernetes_enum_variant_strings.push(enum_variant_string);
150157
}
151158

152159
let version_ident = &version.ident;
@@ -164,7 +171,8 @@ impl StandaloneContainer {
164171
}
165172

166173
tokens.extend(self.container.generate_kubernetes_merge_crds(
167-
kubernetes_enum_variants,
174+
kubernetes_enum_variant_idents,
175+
kubernetes_enum_variant_strings,
168176
kubernetes_merge_crds_fn_calls,
169177
false,
170178
));

crates/stackable-versioned-macros/src/codegen/container/struct.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -264,10 +264,11 @@ impl Struct {
264264
pub(crate) fn generate_kubernetes_item(
265265
&self,
266266
version: &VersionDefinition,
267-
) -> Option<(IdentString, TokenStream)> {
267+
) -> Option<(IdentString, String, TokenStream)> {
268268
match &self.common.options.kubernetes_options {
269269
Some(_) => {
270270
let enum_variant_ident = version.inner.as_variant_ident();
271+
let enum_variant_string = version.inner.to_string();
271272

272273
let struct_ident = &self.common.idents.kubernetes;
273274
let module_ident = &version.ident;
@@ -277,19 +278,20 @@ impl Struct {
277278
<#qualified_path as ::kube::CustomResourceExt>::crd()
278279
};
279280

280-
Some((enum_variant_ident, merge_crds_fn_call))
281+
Some((enum_variant_ident, enum_variant_string, merge_crds_fn_call))
281282
}
282283
None => None,
283284
}
284285
}
285286

286287
pub(crate) fn generate_kubernetes_merge_crds(
287288
&self,
288-
enum_variants: Vec<IdentString>,
289+
enum_variant_idents: Vec<IdentString>,
290+
enum_variant_strings: Vec<String>,
289291
fn_calls: Vec<TokenStream>,
290292
is_nested: bool,
291293
) -> Option<TokenStream> {
292-
if enum_variants.is_empty() {
294+
if enum_variant_idents.is_empty() {
293295
return None;
294296
}
295297

@@ -303,14 +305,14 @@ impl Struct {
303305
Some(quote! {
304306
#automatically_derived
305307
pub enum #enum_ident {
306-
#(#enum_variants),*
308+
#(#enum_variant_idents),*
307309
}
308310

309311
#automatically_derived
310312
impl ::std::fmt::Display for #enum_ident {
311313
fn fmt(&self, f: &mut ::std::fmt::Formatter<'_>) -> ::std::result::Result<(), ::std::fmt::Error> {
312314
match self {
313-
#(Self::#enum_variants => f.write_str("stuff")),*
315+
#(Self::#enum_variant_idents => f.write_str(#enum_variant_strings)),*
314316
}
315317
}
316318
}

0 commit comments

Comments
 (0)