#merge #applications #lib #variables #anywhere #file-source #environment

mofa

yet another another config lib for web application

1 unstable release

new 0.1.0 Dec 27, 2024

#4 in #anywhere

Download history 113/week @ 2024-12-25

113 downloads per month

MIT license

22KB
463 lines

mofa

the config lib wich merge 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

~3–4MB
~74K SLoC