use serde::Deserialize;
use std::collections::BTreeMap;
#[derive(Debug, Deserialize, Clone)]
pub struct NamespaceOptionConfig {
#[serde(rename = "argumentIndex")]
pub argument_index: usize,
#[serde(rename = "property")]
pub property: String,
}
#[derive(Debug, Deserialize, Clone)]
pub struct ExtraCallerConfig {
#[serde(rename = "callerName")]
pub caller_name: String,
#[serde(rename = "importSources")]
pub import_sources: Vec<String>,
#[serde(rename = "namespaceArgIndex", default)]
pub namespace_arg_index: Option<usize>,
#[serde(rename = "fixedNamespace", default)]
pub fixed_namespace: Option<String>,
#[serde(rename = "namespaceOption", default)]
pub namespace_option: Option<NamespaceOptionConfig>,
#[serde(rename = "staticReplacement")]
pub static_replacement: String,
#[serde(rename = "dynamicReplacement")]
pub dynamic_replacement: String,
}
pub type FieldRenameMap = BTreeMap<String, FieldRenameNode>;
#[derive(Debug, Deserialize, Clone, Default)]
pub struct FieldRenameNode {
#[serde(rename = "shortName")]
pub short_name: String,
#[serde(rename = "children", default)]
pub children: FieldRenameMap,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, PartialOrd, Ord)]
pub enum LogLevel {
#[default]
Off,
Info,
Debug,
}
impl LogLevel {
pub fn from_option(raw: Option<&str>) -> Self {
match raw {
Some("info") => LogLevel::Info,
Some("debug" | "verbose") => LogLevel::Debug,
_ => LogLevel::Off,
}
}
}
#[derive(Debug, Deserialize, Clone, Default)]
pub struct PluginConfig {
#[serde(rename = "dictionariesDir")]
pub dictionaries_dir: String,
#[serde(rename = "dictionariesEntryPath")]
pub dictionaries_entry_path: String,
#[serde(rename = "dynamicDictionariesDir")]
pub dynamic_dictionaries_dir: String,
#[serde(rename = "fetchDictionariesDir")]
pub fetch_dictionaries_dir: String,
#[serde(rename = "importMode")]
pub import_mode: Option<String>,
#[serde(rename = "replaceDictionaryEntry")]
pub replace_dictionary_entry: Option<bool>,
#[serde(rename = "nestingDictionaryKeys", default)]
pub nesting_dictionary_keys: Vec<String>,
#[serde(rename = "filesList", default)]
pub files_list: Vec<String>,
#[serde(rename = "dictionaryModeMap")]
pub dictionary_mode_map: Option<BTreeMap<String, String>>,
#[serde(rename = "extraCallers", default)]
pub extra_callers: Vec<ExtraCallerConfig>,
#[serde(rename = "fieldRenameMap", default)]
pub field_rename_map: BTreeMap<String, FieldRenameMap>,
#[serde(rename = "logLevel", default)]
pub log_level: Option<String>,
}