use serde::Serialize;
use serde::de::DeserializeOwned;
use crate::{ConfigMetadata, TierMetadata};
use super::super::{ConfigLoader, UnknownFieldPolicy};
impl<T> ConfigLoader<T>
where
T: Serialize + DeserializeOwned,
{
#[must_use]
pub fn secret_path(mut self, path: impl Into<String>) -> Self {
let path = path.into();
if !path.is_empty() && path != "." {
self.secret_paths.insert(path);
}
self
}
#[must_use]
pub fn metadata(mut self, metadata: ConfigMetadata) -> Self {
self.secret_paths.extend(metadata.secret_paths());
self.metadata.extend(metadata);
self
}
#[must_use]
pub fn profile(mut self, profile: impl Into<String>) -> Self {
self.profile = Some(profile.into());
self
}
#[must_use]
pub fn derive_metadata(self) -> Self
where
T: TierMetadata,
{
self.metadata(T::metadata())
}
#[must_use]
pub fn unknown_field_policy(mut self, policy: UnknownFieldPolicy) -> Self {
self.unknown_field_policy = policy;
self
}
#[must_use]
pub fn allow_unknown_fields(self) -> Self {
self.unknown_field_policy(UnknownFieldPolicy::Allow)
}
#[must_use]
pub fn warn_unknown_fields(self) -> Self {
self.unknown_field_policy(UnknownFieldPolicy::Warn)
}
#[must_use]
pub fn deny_unknown_fields(self) -> Self {
self.unknown_field_policy(UnknownFieldPolicy::Deny)
}
}