1 defmodule Pleroma.Config.Loader do
2 @paths ["config/config.exs", "config/#{Mix.env()}.exs"]
4 if Code.ensure_loaded?(Config.Reader) do
5 @spec load(Path.t()) :: keyword()
6 def load(path), do: Config.Reader.read!(path)
8 defp do_merge(conf1, conf2), do: Config.Reader.merge(conf1, conf2)
10 # support for Elixir less than 1.9
11 @spec load(Path.t()) :: keyword()
13 {config, _paths} = Mix.Config.eval!(path)
17 defp do_merge(conf1, conf2), do: Mix.Config.merge(conf1, conf2)
20 @spec load_and_merge() :: keyword()
23 if Pleroma.Config.get(:release),
24 do: @paths ++ ["config/releases.exs"],
28 |> Enum.map(&load(&1))
32 @spec merge([keyword()], keyword()) :: keyword()
33 def merge(configs, acc \\ [])
34 def merge([], acc), do: acc
36 def merge([config | others], acc) do
37 merge(others, do_merge(acc, config))