Easy build a configs from environment variables and use it in globally.
This repository has been archived on 2022-07-24. You can view files and clone it, but cannot push or open issues or pull requests.
Find a file
2020-01-07 22:36:50 +03:00
examples chore: update rocket example 2020-01-07 17:20:58 +03:00
itconfig doc: update example in readme 2020-01-07 22:36:50 +03:00
itconfig_tests doc: add documentation for concat vars 2020-01-07 16:14:45 +03:00
.gitignore chore: add example with diesel 2019-12-29 01:12:46 +03:00
.travis.yml ci: add travis ci 2019-12-26 06:38:54 +03:00
Cargo.toml chore: remove rocket example from members 2019-12-31 09:32:45 +03:00
LICENSE Initial commit 2019-12-22 15:58:34 +03:00
README.md doc: update example in readme 2020-01-07 22:36:50 +03:00

itconfig

Build Status Documentation Crates.io Join the chat at https://gitter.im/icetemple/itconfig-rs

Easy build a configs from environment variables and use it in globally.

We recommend you start with the documentation.

Example usage

#[macro_use] extern crate itconfig;
use std::env;
//use dotenv::dotenv;

config! {
    DEBUG: bool => true,
    HOST: String => "127.0.0.1",
    
    DATABASE_URL < (
        "postgres://",
        POSTGRES_USERNAME => "user",
        ":",
        POSTGRES_PASSWORD => "pass",
        "@",
        POSTGRES_HOST => "localhost:5432",
        "/",
        POSTGRES_DB => "test",
    ),

    NAMESPACE {
        #[env_name = "MY_CUSTOM_NAME"]
        FOO: bool,
        
        BAR: i32 => 10,
        
        #[cfg(feature = "feature")]
        #[env_name = "POSTGRES_CONNECTION_STRING"]
        DATABASE_URL: String
    }
}

fn main () {
    // dotenv().ok();
    env::set_var("MY_CUSTOM_NAME", "t");
    
    cfg::init();
    assert_eq!(cfg::HOST(), String::from("127.0.0.1"));
    assert_eq!(cfg::DATABASE_URL(), String::from("postgres://user:pass@localhost:5432/test"));
    assert_eq!(cfg::NAMESPACE::FOO(), true);
}

Running tests

cargo test

Roadmap

  • Add namespace for variables
  • Custom env name
  • Support feature config and other meta directives
  • Add default value to env if env is not found
  • Concat env variables to one variable

License

MIT © Ice Temple

Contributors

pleshevskiy (Dmitriy Pleshevskiy) creator, maintainer.