refactor: Swtich to using bon for builder pattern

This commit is contained in:
Gerald Pinder 2024-09-21 13:15:45 -04:00
parent aed7e275f2
commit 0c52cf6a54
36 changed files with 326 additions and 314 deletions

View file

@ -1,23 +1,23 @@
use std::{borrow::Cow, path::PathBuf};
use blue_build_utils::syntax_highlighting::highlight_ser;
use bon::Builder;
use colored::Colorize;
use indexmap::IndexMap;
use log::{trace, warn};
use miette::{bail, Result};
use serde::{Deserialize, Serialize};
use serde_yaml::Value;
use typed_builder::TypedBuilder;
use crate::{AkmodsInfo, ModuleExt};
#[derive(Serialize, Deserialize, Debug, Clone, TypedBuilder, Default)]
#[derive(Serialize, Deserialize, Debug, Clone, Builder, Default)]
pub struct ModuleRequiredFields<'a> {
#[builder(default, setter(into))]
#[builder(into)]
#[serde(rename = "type")]
pub module_type: Cow<'a, str>,
#[builder(default, setter(into, strip_option))]
#[builder(into)]
#[serde(skip_serializing_if = "Option::is_none")]
pub source: Option<Cow<'a, str>>,
@ -26,7 +26,7 @@ pub struct ModuleRequiredFields<'a> {
pub no_cache: bool,
#[serde(flatten)]
#[builder(default, setter(into))]
#[builder(default, into)]
pub config: IndexMap<String, Value>,
}
@ -154,13 +154,12 @@ impl<'a> ModuleRequiredFields<'a> {
}
}
#[derive(Serialize, Deserialize, Debug, Clone, TypedBuilder, Default)]
#[derive(Serialize, Deserialize, Debug, Clone, Builder, Default)]
pub struct Module<'a> {
#[builder(default, setter(strip_option))]
#[serde(flatten, skip_serializing_if = "Option::is_none")]
pub required_fields: Option<ModuleRequiredFields<'a>>,
#[builder(default, setter(into, strip_option))]
#[builder(into)]
#[serde(rename = "from-file", skip_serializing_if = "Option::is_none")]
pub from_file: Option<Cow<'a, str>>,
}