build status

Config

Provides convenient way to load application configuration from config files and environment variables.

Installation

Add config to your list of dependencies in mix.exs:

def deps do
  [{:config, "~> 0.1.0"}]
end

Usage

WARNING! Project is in active development stage. Use it carefully in production. Coming v1.0.0 will be first stable release.

Please refer to package documentation for details.

Specify your configuration (it handy to do it in your application module) by adding use Config and using Config.config/2 macro. After that you can load configuration with Config.load/2 function like in following example:

defmodule MyApplication do
  use Application
  use Config

  Config.config :my_application do
    option timeout, int, ["-t", "--timeout", "MY_TIMEOUT", default: 100]
    category connection do
      type   :map
      option host, string, [h, host, MY_HOST, default: "localhost"]
    end
  end

  def start(_type, _args) do
    Config.load(:my_application)
    Application.get_env(:my_application, :timeout)    # -> 100
    Application.get_env(:my_application, :connection) # -> %{host: "localhost"}
  end
end

Firstly Config.load/2 fills application environment with default values.

After that it will search for .my_application.yml in current folder, user home folder and application folder and if success loads config from it into application environment, overriding existing values.

After that it will parse command-line options and overrides corresponding values (timeout if -t or --timeout option specified and connection.host if -h or --host option specified).

Finally, environment variables will be scanned for MY_TIMEOUT and MY_HOST and if present their values will override corresponding configuration.

TODO