Skip to content

Commit 2512a17

Browse files
authored
refactor(stackable-versioned): Convert Override to enum (#922)
* refactor(stackable-versioned): Convert Override to enum * chore(stackable-versioned): Update changelog * chore(stackable-versioned): Remove commented code
1 parent 11c4092 commit 2512a17

File tree

2 files changed

+24
-48
lines changed
  • crates

2 files changed

+24
-48
lines changed

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

Lines changed: 22 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -316,11 +316,11 @@ pub(crate) struct KubernetesCrateOptions {
316316
impl Default for KubernetesCrateOptions {
317317
fn default() -> Self {
318318
Self {
319-
k8s_openapi: Override::new_default(parse_quote! { ::k8s_openapi }),
320-
serde_json: Override::new_default(parse_quote! { ::serde_json }),
321-
kube_core: Override::new_default(parse_quote! { ::kube::core }),
322-
schemars: Override::new_default(parse_quote! { ::schemars }),
323-
serde: Override::new_default(parse_quote! { ::serde }),
319+
k8s_openapi: Override::Default(parse_quote! { ::k8s_openapi }),
320+
serde_json: Override::Default(parse_quote! { ::serde_json }),
321+
kube_core: Override::Default(parse_quote! { ::kube::core }),
322+
schemars: Override::Default(parse_quote! { ::schemars }),
323+
serde: Override::Default(parse_quote! { ::serde }),
324324
}
325325
}
326326
}
@@ -330,23 +330,23 @@ impl From<KubernetesCrateArguments> for KubernetesCrateOptions {
330330
let mut crate_options = Self::default();
331331

332332
if let Some(k8s_openapi) = args.k8s_openapi {
333-
crate_options.k8s_openapi = Override::new_custom(k8s_openapi);
333+
crate_options.k8s_openapi = Override::Overridden(k8s_openapi);
334334
}
335335

336336
if let Some(serde_json) = args.serde_json {
337-
crate_options.serde_json = Override::new_custom(serde_json);
337+
crate_options.serde_json = Override::Overridden(serde_json);
338338
}
339339

340340
if let Some(kube_core) = args.kube_core {
341-
crate_options.kube_core = Override::new_custom(kube_core);
341+
crate_options.kube_core = Override::Overridden(kube_core);
342342
}
343343

344344
if let Some(schemars) = args.schemars {
345-
crate_options.schemars = Override::new_custom(schemars);
345+
crate_options.schemars = Override::Overridden(schemars);
346346
}
347347

348348
if let Some(serde) = args.serde {
349-
crate_options.serde = Override::new_custom(serde);
349+
crate_options.serde = Override::Overridden(serde);
350350
}
351351

352352
crate_options
@@ -365,23 +365,23 @@ impl ToTokens for KubernetesCrateOptions {
365365
serde,
366366
} = self;
367367

368-
if let Some(k8s_openapi) = k8s_openapi.get_if_overridden() {
368+
if let Override::Overridden(k8s_openapi) = k8s_openapi {
369369
crate_overrides.extend(quote! { k8s_openapi = #k8s_openapi, });
370370
}
371371

372-
if let Some(serde_json) = serde_json.get_if_overridden() {
372+
if let Override::Overridden(serde_json) = serde_json {
373373
crate_overrides.extend(quote! { serde_json = #serde_json, });
374374
}
375375

376-
if let Some(kube_core) = kube_core.get_if_overridden() {
376+
if let Override::Overridden(kube_core) = kube_core {
377377
crate_overrides.extend(quote! { kube_core = #kube_core, });
378378
}
379379

380-
if let Some(schemars) = schemars.get_if_overridden() {
380+
if let Override::Overridden(schemars) = schemars {
381381
crate_overrides.extend(quote! { schemars = #schemars, });
382382
}
383383

384-
if let Some(serde) = serde.get_if_overridden() {
384+
if let Override::Overridden(serde) = serde {
385385
crate_overrides.extend(quote! { serde = #serde, });
386386
}
387387

@@ -393,44 +393,18 @@ impl ToTokens for KubernetesCrateOptions {
393393

394394
/// Wraps a value to indicate whether it is original or has been overridden.
395395
#[derive(Debug)]
396-
pub(crate) struct Override<T> {
397-
is_overridden: bool,
398-
inner: T,
399-
}
400-
401-
impl<T> Override<T> {
402-
/// Mark a value as a default.
403-
///
404-
/// This is used to indicate that the value is a default and was not overridden.
405-
pub(crate) fn new_default(inner: T) -> Self {
406-
Override {
407-
is_overridden: false,
408-
inner,
409-
}
410-
}
411-
412-
/// Mark a value as overridden.
413-
///
414-
/// This is used to indicate that the value was overridden and not the default.
415-
pub(crate) fn new_custom(inner: T) -> Self {
416-
Override {
417-
is_overridden: true,
418-
inner,
419-
}
420-
}
421-
422-
pub(crate) fn get_if_overridden(&self) -> Option<&T> {
423-
match &self.is_overridden {
424-
true => Some(&self.inner),
425-
false => None,
426-
}
427-
}
396+
pub(crate) enum Override<T> {
397+
Default(T),
398+
Overridden(T),
428399
}
429400

430401
impl<T> Deref for Override<T> {
431402
type Target = T;
432403

433404
fn deref(&self) -> &Self::Target {
434-
&self.inner
405+
match &self {
406+
Override::Default(inner) => inner,
407+
Override::Overridden(inner) => inner,
408+
}
435409
}
436410
}

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 ([#922]).
2324

2425
### Fixed
2526

@@ -33,6 +34,7 @@ All notable changes to this project will be documented in this file.
3334
[#914]: https://github.com/stackabletech/operator-rs/pull/914
3435
[#919]: https://github.com/stackabletech/operator-rs/pull/919
3536
[#920]: https://github.com/stackabletech/operator-rs/pull/920
37+
[#922]: https://github.com/stackabletech/operator-rs/pull/922
3638

3739
## [0.4.1] - 2024-10-23
3840

0 commit comments

Comments
 (0)