use std::path::PathBuf;
use confique::Config;
pub use crate::config_env::ConfiqueEnvProvider;
pub use crate::config_format::ConfigFormat;
pub use crate::config_load::{
build_config_figment, load_config, load_config_from_figment, load_config_with_figment,
};
pub(crate) use crate::config_output::{
default_config_schema_output, resolve_config_template_output,
};
pub use crate::config_schema::{
ConfigSchemaTarget, config_schema_targets_for_path, write_config_schema, write_config_schemas,
};
pub use crate::config_templates::{
ConfigTemplateTarget, template_for_path, template_targets_for_paths,
template_targets_for_paths_with_schema, write_config_templates,
write_config_templates_with_schema,
};
pub use crate::config_trace::trace_config_sources;
pub type ConfigResult<T> = std::result::Result<T, crate::ConfigError>;
pub trait ConfigSchema: Config + Sized {
fn include_paths(layer: &<Self as Config>::Layer) -> Vec<PathBuf>;
fn template_path_for_section(section_path: &[&str]) -> Option<PathBuf> {
let _ = section_path;
None
}
}
#[cfg(test)]
#[path = "unit_tests/config.rs"]
mod unit_tests;