Current section
Files
Jump to
Current section
Files
lib/figaro.ex
defmodule Figaro do
use Application
alias Figaro.Utils
def start(_type, _args) do
Figaro.Supervisor.start_link
end
@doc """
Starts a new Figaro server and sets the ENV with variables
defined in config/application.yml
"""
def start_link do
config = load_config
set_env(config)
Agent.start_link(fn -> config end, name: :config)
end
@doc """
Gets the ENV variable defined in config/application.yml
"""
def env do
Agent.get(:config, fn map -> map end)
end
def load_config do
config_file
|> :yamerl_constr.file
|> List.flatten
|> Utils.cleanse_yaml
|> Enum.into(Map.new)
end
def set_env(config) do
config
|> Utils.prepare_for_env
|> System.put_env
end
def config_file do
file = File.cwd!
|> Path.join("config")
|> Path.join("application.yml")
cond do
File.exists?(file) -> file
true -> raise "application.yml not found"
end
end
end