0fa7c5bf745f674fd7949488330e13c6d4bda480
[akkoma] / lib / pleroma / config / holder.ex
1 defmodule Pleroma.Config.Holder do
2 @config Pleroma.Config.Loader.load_and_merge()
3
4 @spec config() :: keyword()
5 def config do
6 @config
7 |> Keyword.keys()
8 |> Enum.map(&filter(&1, config(&1)))
9 |> List.flatten()
10 end
11
12 @spec config(atom()) :: any()
13 def config(group), do: @config[group]
14
15 @spec config(atom(), atom()) :: any()
16 def config(group, key), do: @config[group][key]
17
18 defp filter(group, settings) when group not in [:swarm] do
19 filtered =
20 Enum.reject(settings, fn {k, _v} ->
21 k in [Pleroma.Repo, Pleroma.Web.Endpoint, :env, :configurable_from_database] or
22 (group == :phoenix and k == :serve_endpoints)
23 end)
24
25 {group, filtered}
26 end
27
28 defp filter(_, _), do: []
29 end