1 defmodule Pleroma.Config.Loader do
2 # TODO: add support for releases
3 if Code.ensure_loaded?(Config.Reader) do
6 config = load("config/config.exs")
7 env_config = load("config/#{Mix.env()}.exs")
9 Config.Reader.merge(config, env_config)
12 @spec load(Path.t()) :: keyword()
13 def load(path), do: Config.Reader.read!(path)
15 # support for Elixir less than 1.9
18 config = load("config/config.exs")
19 env_config = load("config/#{Mix.env()}.exs")
21 Mix.Config.merge(config, env_config)
24 @spec load(Path.t()) :: keyword()
26 {config, _paths} = Mix.Config.eval!(path)
32 defmodule Pleroma.Config.Holder do
33 @config Pleroma.Config.Loader.load()
35 @spec config() :: keyword()
39 |> Enum.map(&filter(&1, config(&1)))
43 @spec config(atom()) :: any()
44 def config(group), do: @config[group]
46 @spec config(atom(), atom()) :: any()
47 def config(group, key), do: @config[group][key]
49 defp filter(group, settings) when group not in [:swarm] do
51 Enum.reject(settings, fn {k, _v} ->
52 k in [Pleroma.Repo, Pleroma.Web.Endpoint, :env, :configurable_from_database] or
53 (group == :phoenix and k == :serve_endpoints)
59 defp filter(_, _), do: []