env-vars-to-json

Crates.ioenv-vars-to-json
lib.rsenv-vars-to-json
version0.1.6
sourcesrc
created_at2023-06-05 05:00:42.017184
updated_at2023-06-06 03:39:01.984827
descriptionConvert environment variables to JSON
homepage
repositoryhttps://github.com/therealhieu/env-vars-to-json
max_upload_size
id882800
size47,108
Hieu Minh Nguyen (therealhieu)

documentation

README

env-vars-to-json: Construct JSON from environment variables

CI codecov Crates.io Docs.rs

This crate provides methods to construct serde_json::Value from environment variables.

Examples:

Given environemnt variables, with prefix PREFIX and separator __:

export PREFIX__INT_LIST__0=1
export PREFIX__INT_LIST__1=2
export PREFIX__STRUCT__INT=1
export PREFIX__STRUCT__STRING=string
export PREFIX__STRUCT__BOOL_LIST__0=true
export PREFIX__STRUCT__BOOL_LIST__1=false
export PREFIX__STRUCT__STRUCT__INT=1
export PREFIX__STRUCT__STRUCT__STRING=string
export PREFIX__STRUCT__STRUCT__BOOL_LIST__0=true
export PREFIX__STRUCT__STRUCT__BOOL_LIST__1=false
export PREFIX__BOOL_LIST__3=true
export PREFIX__STRUCT__FLOAT=1.1
export PREFIX__BOOL_LIST__0=false
export PREFIX__STRING_LIST__0=string0

Without default json:

use serde_json::json;
use env_vars_to_json::Parser;

let json = Parser::default()
    .with_prefix("PREFIX")
    .with_separator("__")
    .parse_from_env()
    .expect("Failed to parse environment variables");

assert_eq!(json, json!(
  {
    "int_list": [1, 2],
    "struct": {
      "int": 1,
      "float": 1.1,
      "string": "string",
      "bool_list": [true, false],
      "struct": {
        "int": 1,
        "string": "string",
        "bool_list": [true, false]
      }
    },
    "bool_list": [false, null, null, true],
    "string_list": ["string0"]
  }
))

With default json and filters (require feature filter enabled):

use serde_json::json;
use env_vars_to_json::Parser;

let json = Parser::default()
    .with_prefix("PREFIX")
    .with_separator("__")
    .with_include(&[".*STRUCT.*"])
    .with_exclude(&[".*INT_LIST.*", "PREFIX__BOOL_LIST.*"])
    .with_json(json!(
        {
          "float_list": [1.1],
          "string_list": ["a", "b"],
          "bool_list": [true, false]
        }
    ))
    .parse_from_env()
    .expect("Failed to parse environment variables");

assert_eq!(json, json!(
  {
      "float_list": [1.1],
      "struct": {
        "int": 1,
        "float": 1.1,
        "string": "string",
        "bool_list": [true, false],
        "struct": {
          "int": 1,
          "string": "string",
          "bool_list": [true, false]
        }
      },
      "bool_list": [true, false],
      "string_list": ["a", "b"]
    }  
));

License

Licensed under either of

at your option.

Commit count: 41

cargo fmt