//! Helpers for loading configurations with env overlap

use tici::config::MetaServiceConfig;
use tici_shard::config::WorkerNodeConfig;

// Try to load the meta service configuration from
// - environment variable `TEST_META_CONFIG`
// - the `default_path`
pub fn load_meta_config(default_path: &str) -> anyhow::Result<MetaServiceConfig> {
    let path = std::env::var("TEST_META_CONFIG") //
        .map(|p| {
            log::info!("Using TEST_META_CONFIG, path={}", p);
            p
        })
        .unwrap_or(default_path.to_string());
    MetaServiceConfig::load(&path)
}

// Try to load the shard writer configuration from
// - environment variable `TEST_WORKER_CONFIG`
// - the `default_path`
pub fn load_worker_config(default_path: &str) -> anyhow::Result<WorkerNodeConfig> {
    let path = std::env::var("TEST_WORKER_CONFIG") //
        .map(|p| {
            log::info!("Using TEST_WORKER_CONFIG, path={}", p);
            p
        })
        .unwrap_or(default_path.to_string());
    WorkerNodeConfig::load(&path)
}
