hierconf-core 0.2.0

Core functionality for hierconf configuration management
Documentation
pub mod attrs;
pub mod error;
pub mod loader;

pub use attrs::{Attr as HierConfAttr, AttrKey, extract_attr, extract_optional_attr};
pub use error::HierConfError;
pub use loader::config_paths;

use facet::Facet;

/// Load configuration from standard Unix hierarchy paths.
///
/// Loads the first existing file from (in precedence order):
/// 1. User-specific: `$XDG_CONFIG_HOME/{app_name}/config.toml` or `$HOME/.config/{app_name}/config.toml` (Linux/BSD), `$HOME/Library/Application Support/{app_name}/config.toml` (macOS) - requires `user-config` feature
/// 2. System-wide: `/etc/{app_name}/config.toml`
/// 3. Distribution: `$HIERCONF_DISTRIBUTION_PREFIX/{app_name}/config.toml` (if env var set at compile time)
/// 4. Distribution: `/usr/share/etc/{app_name}/config.toml`
///
/// The `app_name` is extracted from the `#[facet(hierconf::app_name("..."))]` attribute.
pub fn load_config<T>() -> Result<T, HierConfError>
where
    T: Facet<'static>,
{
    loader::load_config::<T>()
}