Giter Club home page Giter Club logo

ctrl-env's Introduction

ctrl-env

Build Status Codacy Badge Codacy Badge

An alternative way to assert environment variables.

Installation

Yarn is recommended for installation.

$ yarn add ctrl-env

But you can still use npm:

$ npm install --save ctrl-env

Usage

// Example app.js:

const CtrlEnv = require('ctrl-env')

const ctrlEnv = new CtrlEnv([
  ['SECRET']
, ['PORT', {required: false}]
], {
  prefix: 'TWITTER_FEED'
})

ctrlEnv.assert()

// Some Twitter Feed and Server pseudo code:

http.on('/feed', (request, response) => {
  Twitter.getFeed({
    handle: '_experiments'
  , secret: ctrlEnv.SECRET
  }, (error, feed) => {
    if (error) {
      throw error
    }

    response.send(feed)
  })
})

http.listen(ctrlEnv.PORT)
$ TWITTER_FEED_SECRET='twitter_secret_key' TWITTER_FEED_PORT=8080 node app.js
$ # or
$ TWITTER_FEED_SECRET='twitter_secret_key' node app.js

Methods v2

constructor(Array environmentVariables, Object options)

The constructor takes an array of environment variables to expect. The variables themselves can be configured:

const exampleEnvVars = [
  // Variable is required and can be any value:
  ['REQUIRED_VARIABLE']

  // Variable is optional and can be any value:
, ['OPTIONAL_VARIABLE', {required: false}]

  // Variable is required and can only be yes or no:
, ['LIMITED_VARIABLE', {values: ['yes', 'no']}]

  // Variable is required and can only be an integer:
, ['TYPED_VARIABLE', {type: 'integer'}]

  // Variable is optional and can only be yes or no:
, ['OPTIONAL_LIMITED_VARIABLE', {required: false, values: ['yes', 'no']}]

  // Variable is required but is not prefixed:
, ['NODE_ENV', {prefixed: false}]
]

const ctrlEnv = new CtrlEnv(exampleEnvVars)

The constructor also takes an optional prefix and separator. The separator only determines what seperates the prefix and the variable name:

// Variables must be labeled TEST_(VARIABLENAME):
new CtrlEnv(..., {prefix: 'TEST'})

// Variables must be labeled TEST___(VARIABLENAME)
new CtrlEnv(..., {prefix: 'TEST', separator: '___'})

ctrlEnv.assert()

This method actually reads the environment variables and asserts that they exist or have the required values. Note: This method is synchronous.

get ctrlEnv.VARIABLE_NAME

To read the environment variable, simply use the variable name without the prefix as a property of your CtrlEnv instance. This property is a proper ES2015 getter that does not have a setter. It cannot be overwritten without using Object.defineProperty.

get ctrlEnv.all

This returns an object with all asserted environment variables. This property is a propert ES2015 getter that does not have a setter. It cannot be overwritten without Object.defineProperty.

Note: This deprecates #get() from v1.

License

Copyright (c) 2017 Martin Experiments LLC

MIT (https://www.opensource.org/licenses/MIT)

ctrl-env's People

Contributors

umamialex avatar

Stargazers

Damian Kaczmarek avatar

Watchers

James Cloos avatar

ctrl-env's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.