#env #figment #env-file #env-var #file #derive-deserialize #api-key

figment_file_env_provider

A Figment provider to read from env or files

2 unstable releases

0.2.0 Sep 8, 2022
0.1.0 Sep 8, 2022

#991 in Configuration

MIT license

19KB
221 lines

Figment FileEnv Provider   ci.svg crates.io docs.rs

Figment provider for optionally file-based env config values.

use serde::Deserialize;
use figment::{Figment, providers::Env};
use figment_file_env_provider::FileEnv;

#[derive(Deserialize)]
struct Config {
  frobnicate: String,
  foo: u64,
}

let config: Config = Figment::new()
    .merge(FileEnv::from_env(Env::prefixed("APP_")))
    .extract()?;

Overview

This crate contains the FileEnv provider for Figment, to allow loading configuration values from either environment variables or files. 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 environment variable API_KEY=abc123deadbeef, or you could write that API key to a file /secrets/api_key and pass the env variable 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", features = ["env"] }
figment_file_env_provider = { version = "0.1" }

License

Figment_file_env_provider is licensed under either of the MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT).

Dependencies

~3–12MB
~152K SLoC