aboutsummaryrefslogtreecommitdiff
path: root/lib/pleroma
diff options
context:
space:
mode:
Diffstat (limited to 'lib/pleroma')
-rw-r--r--lib/pleroma/config/holder.ex33
-rw-r--r--lib/pleroma/config/loader.ex39
2 files changed, 40 insertions, 32 deletions
diff --git a/lib/pleroma/config/holder.ex b/lib/pleroma/config/holder.ex
index 7436df1a7..0fa7c5bf7 100644
--- a/lib/pleroma/config/holder.ex
+++ b/lib/pleroma/config/holder.ex
@@ -1,36 +1,5 @@
-defmodule Pleroma.Config.Loader do
- # TODO: add support for releases
- if Code.ensure_loaded?(Config.Reader) do
- @spec load() :: map()
- def load do
- config = load("config/config.exs")
- env_config = load("config/#{Mix.env()}.exs")
-
- Config.Reader.merge(config, env_config)
- end
-
- @spec load(Path.t()) :: keyword()
- def load(path), do: Config.Reader.read!(path)
- else
- # support for Elixir less than 1.9
- @spec load() :: map()
- def load do
- config = load("config/config.exs")
- env_config = load("config/#{Mix.env()}.exs")
-
- Mix.Config.merge(config, env_config)
- end
-
- @spec load(Path.t()) :: keyword()
- def load(path) do
- {config, _paths} = Mix.Config.eval!(path)
- config
- end
- end
-end
-
defmodule Pleroma.Config.Holder do
- @config Pleroma.Config.Loader.load()
+ @config Pleroma.Config.Loader.load_and_merge()
@spec config() :: keyword()
def config do
diff --git a/lib/pleroma/config/loader.ex b/lib/pleroma/config/loader.ex
new file mode 100644
index 000000000..b13b6eaf4
--- /dev/null
+++ b/lib/pleroma/config/loader.ex
@@ -0,0 +1,39 @@
+defmodule Pleroma.Config.Loader do
+ @paths ["config/config.exs", "config/#{Mix.env()}.exs"]
+
+ if Code.ensure_loaded?(Config.Reader) do
+ @spec load(Path.t()) :: keyword()
+ def load(path), do: Config.Reader.read!(path)
+
+ defp do_merge(conf1, conf2), do: Config.Reader.merge(conf1, conf2)
+ else
+ # support for Elixir less than 1.9
+ @spec load(Path.t()) :: keyword()
+ def load(path) do
+ {config, _paths} = Mix.Config.eval!(path)
+ config
+ end
+
+ defp do_merge(conf1, conf2), do: Mix.Config.merge(conf1, conf2)
+ end
+
+ @spec load_and_merge() :: keyword()
+ def load_and_merge do
+ all_paths =
+ if Pleroma.Config.get(:release),
+ do: @paths ++ ["config/releases.exs"],
+ else: @paths
+
+ all_paths
+ |> Enum.map(&load(&1))
+ |> merge()
+ end
+
+ @spec merge([keyword()], keyword()) :: keyword()
+ def merge(configs, acc \\ [])
+ def merge([], acc), do: acc
+
+ def merge([config | others], acc) do
+ merge(others, do_merge(acc, config))
+ end
+end