Packages

LibEx.Config exposes helpers around accessing OTP application configuration.

Current section

Files

Jump to
libex_config lib lib_ex config.ex
Raw

lib/lib_ex/config.ex

defmodule LibEx.Config do
defmacro __using__(opts) do
application = Keyword.fetch!(opts, :application)
quote do
import unquote(__MODULE__)
@doc false
defp get_env(key) do
case :application.get_env(unquote(application), key) do
{:ok, value} ->
value
_ ->
raise "unable to read env key: #{key} for app: #{unquote(application)}"
end
end
@doc false
defp set_env(key, value) do
case :application.set_env(unquote(application), key, value) do
:ok ->
:ok
_ ->
raise "unable to set env key: #{key} for app: #{unquote(application)}"
end
end
end
end
defmacro defkey(key) do
quote do
def unquote(key)(), do: get_env(unquote(key))
def unquote(key)(value), do: set_env(unquote(key), value)
end
end
end