use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize, Serialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct SdkPattern {
pub function: String,
#[serde(default)]
pub name_arg: usize,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub provider: Option<String>,
}
#[derive(Debug, Clone, Default, Deserialize, Serialize, JsonSchema)]
#[serde(rename_all = "camelCase")]
pub struct FlagsConfig {
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub sdk_patterns: Vec<SdkPattern>,
#[serde(default, skip_serializing_if = "Vec::is_empty")]
pub env_prefixes: Vec<String>,
#[serde(default)]
pub config_object_heuristics: bool,
#[serde(default, skip_serializing_if = "Option::is_none")]
pub vendor_key_prefix: Option<String>,
}
impl FlagsConfig {
#[must_use]
pub fn patterns(&self) -> fallow_types::extract::FlagPatterns {
fallow_types::extract::FlagPatterns {
sdk_patterns: self
.sdk_patterns
.iter()
.map(|pattern| {
(
pattern.function.clone(),
pattern.name_arg,
pattern.provider.clone().unwrap_or_default(),
)
})
.collect(),
env_prefixes: self.env_prefixes.clone(),
config_object_heuristics: self.config_object_heuristics,
}
}
}