1 unstable release
0.1.0 | May 19, 2024 |
---|
#551 in Configuration
30 downloads per month
25KB
271 lines
Figment Directory
![docs.rs](https://img.gs/czjpqfbdkz/full/https://docs.rs/figment_directory/badge.svg)
Figment provider for config values split into multiple files in a directory, working with any Format.
use serde::Deserialize;
use figment::{Figment, providers::{Env, Format, Toml}};
use figment_directory::FormatExt as _;
#[derive(Deserialize)]
struct Config {
database: DatabaseConfig,
pubsub: PubsubConfig
}
#[derive(Deserialize)]
struct DatabaseConfig {
url: String,
}
#[derive(Deserialize)]
struct PubsubConfig {
url: String,
}
let config: Config = Figment::new()
.merge(Toml::directory("config"))
.extract()?;
Directory structure:
- config
- database.toml
- pubsub.toml
# database.toml
url = "some/url"
# pubsub.toml
url = "some/url"
Overview
This crate contains the Directory
provider for Figment
, to allow loading
configuration values a directory containing (possibly nested) files in a consistent file format.
It is wrapped around a Format
implementation like figment::providers::Json
or figment::providers::Toml
.
This might be helpful if you have a lot of configuration values and wish to organize it using the file system.
See the documentation for a detailed usage guide and more information.
Usage
Add the following to your Cargo.toml
:
[dependencies]
figment = { version = "0.10" }
figment-directory = { version = "0.1" }
License
figment_directory is licensed under the BSD-3-Clause License
Dependencies
~435–700KB
~12K SLoC