figment-directory

Crates.iofigment-directory
lib.rsfigment-directory
version0.1.0
sourcesrc
created_at2024-05-19 15:19:15.57856
updated_at2024-05-19 15:19:15.57856
descriptionFigment provider for config values split into multiple files in a directory, working with any format.
homepage
repositoryhttps://github.com/anmolitor/figment-directory
max_upload_size
id1244987
size26,443
Andreas Molitor (anmolitor)

documentation

https://docs.rs/figment-directory/0.1

README

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

Commit count: 8

cargo fmt