#configuration-directory #config-file #directory #configuration #toml-config #file-format

figment-directory

Figment provider for config values split into multiple files in a directory, working with any format

1 unstable release

0.1.0 May 19, 2024

#551 in Configuration

30 downloads per month

BSD-3-Clause

25KB
271 lines

Figment Directory   ci.svg crates.io docs.rs

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