Crate armature_config

Crate armature_config 

Source
Expand description

Configuration management for Armature framework

Provides flexible configuration loading from multiple sources including environment variables, JSON, TOML, and programmatic values.

§Examples

§Basic Usage

use armature_config::ConfigManager;

let manager = ConfigManager::new();

// Set configuration values
manager.set("app.name", "MyApp")?;
manager.set("app.port", 3000i64)?;

// Get configuration values
let name: String = manager.get("app.name")?;
let port: i64 = manager.get("app.port")?;

assert_eq!(name, "MyApp");
assert_eq!(port, 3000);

§Loading from Environment Variables

use armature_config::EnvLoader;

let loader = EnvLoader::new(None);

// Load all environment variables
let vars = loader.load()?;

// Or load a specific variable
match loader.load_var("HOME") {
    Ok(value) => println!("Home directory: {}", value),
    Err(_) => println!("HOME not set"),
}

§Type Conversions

use armature_config::ConfigManager;

let manager = ConfigManager::new();

manager.set("debug", true)?;
manager.set("timeout", 30i64)?;
manager.set("rate", 0.5)?;

// Get with automatic type conversion
let debug = manager.get_bool("debug")?;
let timeout = manager.get_int("timeout")?;
let rate = manager.get_float("rate")?;

assert!(debug);
assert_eq!(timeout, 30);
assert_eq!(rate, 0.5);

§Nested Configuration

use armature_config::ConfigManager;

let manager = ConfigManager::new();

// Set nested configuration using dot notation
manager.set("database.host", "localhost")?;
manager.set("database.port", 5432i64)?;
manager.set("database.username", "admin")?;
manager.set("cache.enabled", true)?;
manager.set("cache.ttl", 3600i64)?;

// Retrieve nested values
let db_host: String = manager.get("database.host")?;
let db_port: i64 = manager.get("database.port")?;
let cache_enabled: bool = manager.get("cache.enabled")?;

assert_eq!(db_host, "localhost");
assert_eq!(db_port, 5432);
assert!(cache_enabled);

§Default Values

use armature_config::ConfigManager;

let manager = ConfigManager::new();

// Set a value
manager.set("max_connections", 100i64)?;

// Get existing value
let max_conn = manager.get_or("max_connections", 50i64);
assert_eq!(max_conn, 100);

// Get non-existent value (returns default)
let min_conn = manager.get_or("min_connections", 10i64);
assert_eq!(min_conn, 10);

// Check if key exists
assert!(manager.has("max_connections"));
assert!(!manager.has("min_connections"));

Re-exports§

pub use config_service::ConfigService;
pub use env::EnvLoader;
pub use error::ConfigError;
pub use error::Result;
pub use loader::ConfigLoader;
pub use loader::FileFormat;
pub use validation::ConfigValidator;
pub use validation::Validate;

Modules§

config_service
env
error
loader
prelude
Prelude for common imports.
validation

Structs§

ConfigManager
Main configuration manager