@@ -9,8 +9,7 @@ use crate::{
9
9
attrs:: common:: ContainerAttributes ,
10
10
codegen:: {
11
11
common:: {
12
- Container , ContainerInput , ContainerVersion , Item , KubernetesOptions , VersionExt ,
13
- VersionedContainer ,
12
+ Container , ContainerInput , ContainerVersion , Item , VersionExt , VersionedContainer ,
14
13
} ,
15
14
vstruct:: field:: VersionedField ,
16
15
} ,
@@ -152,7 +151,7 @@ impl VersionedStruct {
152
151
Some ( options) => {
153
152
// Generate the CustomResource derive macro with the appropriate
154
153
// attributes supplied using #[kube()].
155
- let cr_derive = self . generate_kubernetes_cr_derive ( version, options ) ;
154
+ let cr_derive = self . generate_kubernetes_cr_derive ( version) ;
156
155
157
156
// Generate merged_crd specific code when not opted out.
158
157
let merged_crd = if !options. skip_merged_crd {
@@ -282,22 +281,36 @@ impl VersionedStruct {
282
281
impl VersionedStruct {
283
282
/// Generates the `kube::CustomResource` derive with the appropriate macro
284
283
/// attributes.
285
- fn generate_kubernetes_cr_derive (
286
- & self ,
287
- version : & ContainerVersion ,
288
- options : & KubernetesOptions ,
289
- ) -> TokenStream {
290
- let group = & options. group ;
291
- let version = version. inner . to_string ( ) ;
292
- let kind = options
293
- . kind
294
- . as_ref ( )
295
- . map_or ( self . idents . kubernetes . to_string ( ) , |kind| kind. clone ( ) ) ;
284
+ fn generate_kubernetes_cr_derive ( & self , version : & ContainerVersion ) -> Option < TokenStream > {
285
+ if let Some ( kubernetes_options) = & self . options . kubernetes_options {
286
+ // Required arguments
287
+ let group = & kubernetes_options. group ;
288
+ let version = version. inner . to_string ( ) ;
289
+ let kind = kubernetes_options
290
+ . kind
291
+ . as_ref ( )
292
+ . map_or ( self . idents . kubernetes . to_string ( ) , |kind| kind. clone ( ) ) ;
293
+
294
+ // Optional arguments
295
+ let namespaced = kubernetes_options
296
+ . namespaced
297
+ . then_some ( quote ! { , namespaced } ) ;
298
+ let singular = kubernetes_options
299
+ . singular
300
+ . as_ref ( )
301
+ . map ( |s| quote ! { , singular = #s } ) ;
302
+ let plural = kubernetes_options
303
+ . plural
304
+ . as_ref ( )
305
+ . map ( |p| quote ! { , plural = #p } ) ;
296
306
297
- quote ! {
298
- #[ derive( :: kube:: CustomResource ) ]
299
- #[ kube( group = #group, version = #version, kind = #kind) ]
307
+ return Some ( quote ! {
308
+ #[ derive( :: kube:: CustomResource ) ]
309
+ #[ kube( group = #group, version = #version, kind = #kind #singular #plural #namespaced) ]
310
+ } ) ;
300
311
}
312
+
313
+ None
301
314
}
302
315
303
316
/// Generates the `merge_crds` function call.
0 commit comments