README.md

Figaro
======
[![Build Status](http://img.shields.io/travis/trestrantham/ex_figaro.svg?style=flat "Build Status")](http://travis-ci.org/trestrantham/ex_figaro)
[![Coverage Status](http://img.shields.io/coveralls/trestrantham/ex_figaro.svg?style=flat)](https://coveralls.io/r/trestrantham/ex_figaro?branch=master)

Port of [@laserlemon](http://github.com/laserlemon)'s [Figaro](http://github.com/laserlemon/figaro)
gem to Elixir. Please see original project for additional details and history.
Documentation is lifted from [@laserlemon](http://github.com/laserlemon)'s gem
verbatim (where applicable) in an effort to provide full feature parity.

### Getting Started

Add Figaro as a dependency in your `mix.exs` file.

```elixir
defp deps do
  [{ :figaro, ">= 0.0.0" }]
end
```

You should also update your applications list to include Figaro:

```elixir
def application do
  [applications: [:figaro]]
end
```

After you are done, run `mix deps.get` in your shell to fetch the dependencies.

### Usage

Given the following configuration file:

```yaml
# config/application.yml

foo: bar
baz: qux
```

You will have access to configuration values via `Figaro.env`:

```elixir
iex> Figaro.env.foo
"bar"
iex> Figaro.env.baz
"qux"
iex> Figaro.env
%{foo: "bar", baz: "qux"}
```

Figaro also sets `ENV` with values defined in `application.yml`:

```elixir
iex> System.get_env("FOO")
"bar"
iex> System.get_env("BAZ")
"qux"
```

**Please note:** `ENV` is a simple key/value store. All values will be converted
to strings. Deeply nested configuration structures are not possible.

### Environment-Specific Configuration

Oftentimes, local configuration values change depending on Rails environment.
In such cases, you can add environment-specific values to your configuration file:

```yaml
# config/application.yml

foo: foo
bar: bar

test:
  foo: sekret
  bar: noway
```

You can also nullify configuration values for a specific environment:

```yaml
# config/application.yml

foo: foo
bar: bar

test:
  foo: ~
```

Assuming you are running from the test environment:

```elixir
iex> System.get_env("FOO")
nil
iex> System.get_env("BAR")
"bar"
```

**Please note:** The environment names (`test` above) are derived from `Mix.env`.
Any other keys defining nested configuration values will be ignored.