Skip to content

Commit cccca07

Browse files
committed
refactor(stackable-versioned): Convert Override to enum
1 parent 59cb9d5 commit cccca07

File tree

2 files changed

+39
-47
lines changed
  • crates

2 files changed

+39
-47
lines changed

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

Lines changed: 37 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -306,11 +306,11 @@ pub(crate) struct KubernetesCrateOptions {
306306
impl Default for KubernetesCrateOptions {
307307
fn default() -> Self {
308308
Self {
309-
k8s_openapi: Override::new_default(parse_quote! { ::k8s_openapi }),
310-
serde_json: Override::new_default(parse_quote! { ::serde_json }),
311-
kube_core: Override::new_default(parse_quote! { ::kube::core }),
312-
schemars: Override::new_default(parse_quote! { ::schemars }),
313-
serde: Override::new_default(parse_quote! { ::serde }),
309+
k8s_openapi: Override::Default(parse_quote! { ::k8s_openapi }),
310+
serde_json: Override::Default(parse_quote! { ::serde_json }),
311+
kube_core: Override::Default(parse_quote! { ::kube::core }),
312+
schemars: Override::Default(parse_quote! { ::schemars }),
313+
serde: Override::Default(parse_quote! { ::serde }),
314314
}
315315
}
316316
}
@@ -320,23 +320,23 @@ impl From<KubernetesCrateArguments> for KubernetesCrateOptions {
320320
let mut crate_options = Self::default();
321321

322322
if let Some(k8s_openapi) = args.k8s_openapi {
323-
crate_options.k8s_openapi = Override::new_custom(k8s_openapi);
323+
crate_options.k8s_openapi = Override::Overridden(k8s_openapi);
324324
}
325325

326326
if let Some(serde_json) = args.serde_json {
327-
crate_options.serde_json = Override::new_custom(serde_json);
327+
crate_options.serde_json = Override::Overridden(serde_json);
328328
}
329329

330330
if let Some(kube_core) = args.kube_core {
331-
crate_options.kube_core = Override::new_custom(kube_core);
331+
crate_options.kube_core = Override::Overridden(kube_core);
332332
}
333333

334334
if let Some(schemars) = args.schemars {
335-
crate_options.schemars = Override::new_custom(schemars);
335+
crate_options.schemars = Override::Overridden(schemars);
336336
}
337337

338338
if let Some(serde) = args.serde {
339-
crate_options.serde = Override::new_custom(serde);
339+
crate_options.serde = Override::Overridden(serde);
340340
}
341341

342342
crate_options
@@ -355,23 +355,23 @@ impl ToTokens for KubernetesCrateOptions {
355355
serde,
356356
} = self;
357357

358-
if let Some(k8s_openapi) = k8s_openapi.get_if_overridden() {
358+
if let Override::Overridden(k8s_openapi) = k8s_openapi {
359359
crate_overrides.extend(quote! { k8s_openapi = #k8s_openapi, });
360360
}
361361

362-
if let Some(serde_json) = serde_json.get_if_overridden() {
362+
if let Override::Overridden(serde_json) = serde_json {
363363
crate_overrides.extend(quote! { serde_json = #serde_json, });
364364
}
365365

366-
if let Some(kube_core) = kube_core.get_if_overridden() {
366+
if let Override::Overridden(kube_core) = kube_core {
367367
crate_overrides.extend(quote! { kube_core = #kube_core, });
368368
}
369369

370-
if let Some(schemars) = schemars.get_if_overridden() {
370+
if let Override::Overridden(schemars) = schemars {
371371
crate_overrides.extend(quote! { schemars = #schemars, });
372372
}
373373

374-
if let Some(serde) = serde.get_if_overridden() {
374+
if let Override::Overridden(serde) = serde {
375375
crate_overrides.extend(quote! { serde = #serde, });
376376
}
377377

@@ -383,44 +383,34 @@ impl ToTokens for KubernetesCrateOptions {
383383

384384
/// Wraps a value to indicate whether it is original or has been overridden.
385385
#[derive(Debug)]
386-
pub(crate) struct Override<T> {
387-
is_overridden: bool,
388-
inner: T,
386+
pub(crate) enum Override<T> {
387+
Default(T),
388+
Overridden(T),
389389
}
390390

391-
impl<T> Override<T> {
392-
/// Mark a value as a default.
393-
///
394-
/// This is used to indicate that the value is a default and was not overridden.
395-
pub(crate) fn new_default(inner: T) -> Self {
396-
Override {
397-
is_overridden: false,
398-
inner,
399-
}
400-
}
401-
402-
/// Mark a value as overridden.
403-
///
404-
/// This is used to indicate that the value was overridden and not the default.
405-
pub(crate) fn new_custom(inner: T) -> Self {
406-
Override {
407-
is_overridden: true,
408-
inner,
409-
}
410-
}
411-
412-
pub(crate) fn get_if_overridden(&self) -> Option<&T> {
413-
match &self.is_overridden {
414-
true => Some(&self.inner),
415-
false => None,
416-
}
417-
}
418-
}
391+
// impl<T> Override<T> {
392+
// /// Mark a value as a default.
393+
// ///
394+
// /// This is used to indicate that the value is a default and was not overridden.
395+
// pub(crate) fn new_default(inner: T) -> Self {
396+
// Override::Default(inner)
397+
// }
398+
399+
// /// Mark a value as overridden.
400+
// ///
401+
// /// This is used to indicate that the value was overridden and not the default.
402+
// pub(crate) fn new_custom(inner: T) -> Self {
403+
// Override::Overridden(inner)
404+
// }
405+
// }
419406

420407
impl<T> Deref for Override<T> {
421408
type Target = T;
422409

423410
fn deref(&self) -> &Self::Target {
424-
&self.inner
411+
match &self {
412+
Override::Default(inner) => inner,
413+
Override::Overridden(inner) => inner,
414+
}
425415
}
426416
}

crates/stackable-versioned/CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ All notable changes to this project will be documented in this file.
2020

2121
- Simplify crate override handling and generation ([#919]).
2222
- Bump Rust to 1.82.0 ([#891]).
23+
- Refactor the Override type ([#xxx]).
2324

2425
### Fixed
2526

@@ -31,6 +32,7 @@ All notable changes to this project will be documented in this file.
3132
[#913]: https://github.com/stackabletech/operator-rs/pull/913
3233
[#914]: https://github.com/stackabletech/operator-rs/pull/914
3334
[#919]: https://github.com/stackabletech/operator-rs/pull/919
35+
[#xxx]: https://github.com/stackabletech/operator-rs/pull/xxx
3436

3537
## [0.4.1] - 2024-10-23
3638

0 commit comments

Comments
 (0)