1 defmodule Pleroma.Config.Loader do
2 # TODO: add support for releases
3 if Code.ensure_loaded?(Config.Reader) do
6 config = Config.Reader.read!("config/config.exs")
7 env_config = Config.Reader.read!("config/#{Mix.env()}.exs")
9 Config.Reader.merge(config, env_config)
12 # support for Elixir less than 1.9
15 {config, _paths} = Mix.Config.eval!("config/config.exs")
16 {env_config, _paths} = Mix.Config.eval!("config/#{Mix.env()}.exs")
18 Mix.Config.merge(config, env_config)
23 defmodule Pleroma.Config.Holder do
24 @config Pleroma.Config.Loader.load()
26 @spec config() :: keyword()
30 |> Enum.map(&filter(&1, config(&1)))
34 @spec config(atom()) :: any()
35 def config(group), do: @config[group]
37 @spec config(atom(), atom()) :: any()
38 def config(group, key), do: @config[group][key]
40 defp filter(group, settings) when group not in [:swarm] do
42 Enum.reject(settings, fn {k, _v} ->
43 k in [Pleroma.Repo, Pleroma.Web.Endpoint, :env, :configurable_from_database] or
44 (group == :phoenix and k == :serve_endpoints)
50 defp filter(_, _), do: []