releases support
This commit is contained in:
parent
e699861690
commit
efb8ef5abe
6 changed files with 103 additions and 57 deletions
39
lib/pleroma/config/loader.ex
Normal file
39
lib/pleroma/config/loader.ex
Normal file
|
|
@ -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
|
||||
Loading…
Add table
Add a link
Reference in a new issue