2 releases
0.1.1 | Oct 31, 2023 |
---|---|
0.1.0 | Sep 13, 2022 |
#499 in Configuration
1,214 downloads per month
Used in immich-tools
26KB
388 lines
Figment File Provider Adapter
Figment provider for optionally file-based config values, working with any provider.
use serde::Deserialize;
use figment::{Figment, providers::{Env, Format, Toml}};
use figment_file_provider_adapter::FileAdapter;
#[derive(Deserialize)]
struct Config {
frobnicate: String,
foo: u64,
}
let config: Config = Figment::new()
.merge(FileAdapter::wrap(Env::prefixed("APP_")))
.merge(FileAdapter::wrap(Toml::file("config.toml")))
.extract()?;
Overview
This crate contains the FileAdapter
provider for Figment
, to allow loading
configuration values from either direct values or files. It wraps around an existing provider,
and for every key that ends in "_FILE" it replaces the value with reading the file mentioned.
This is especially useful for secret management in combination with containers.
For instance, to pass an API key to the configuration, you could use either the config value API_KEY=abc123deadbeef
, or you could write that API key to a file
/secrets/api_key
and pass the config value API_KEY_FILE=/secrets/api_key
.
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_file_provider_adapter = { version = "0.1" }
License
figment_file_provider_adapter is licensed under either of the MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT).
Dependencies
~0.8–1.4MB
~29K SLoC