#anywhere #toml #mofa

mofa

the config lib that merges options from anywhere

3 releases

0.1.2 Jan 29, 2025
0.1.1 Jan 26, 2025
0.1.0 Dec 27, 2024

#438 in Configuration

Download history 73/week @ 2024-12-21 40/week @ 2024-12-28 2/week @ 2025-01-04 237/week @ 2025-01-25 61/week @ 2025-02-01 3/week @ 2025-02-08 66/week @ 2025-03-01 48/week @ 2025-03-08 48/week @ 2025-03-15

162 downloads per month

MIT license

22KB
464 lines

mofa

the config lib that Merges options from anywhere

GitHub Workflow Status (with branch) Crates.io Crates.io (recent) docs.rs Crates.io

Features

  • hierarchy file supported: file source allow users to load config from multiple files
  • environment variable resolver: mofa can resolve the placeholder like ${APP_KEY_NAME}
  • path variable resolver: mofa can resolve the placeholder like ${parent.sub.key_name}

Installation

$ cargo add mofa

Example

#[derive(Debug, Deserialize)]
struct Config {
    original: String,
    value: String,
}
fn main() {
    let mut loader = ConfigLoader::new();
    loader.add_source(FileSource::new("configuration/application.toml"));
    loader.add_source(FileSource::new("configuration/application_database.toml"));
    loader.add_source(EnvironmentSource::new("APP"));
    loader.enable_environment_variable_processor();
    loader.enable_path_variable_processor();

    let config: Config = loader.construct()?;
}

Contributing

Want to join us? Check out our "Contributing" guide and take a look at some of these issues:

License

This project is licensed under MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT).

Dependencies

~2.8–4MB
~73K SLoC