compile fix
[akkoma] / lib / pleroma / config / holder.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Config.Holder do
6 @config Pleroma.Config.Loader.default_config()
7
8 @spec to_ets() :: true
9 def to_ets do
10 :ets.new(:default_config, [:named_table, :protected])
11
12 default_config =
13 if System.get_env("RELEASE_NAME") do
14 release_config =
15 [:code.root_dir(), "releases", System.get_env("RELEASE_VSN"), "releases.exs"]
16 |> Path.join()
17 |> Pleroma.Config.Loader.read()
18
19 Pleroma.Config.Loader.merge(@config, release_config)
20 else
21 @config
22 end
23
24 :ets.insert(:default_config, {:config, default_config})
25 end
26
27 @spec default_config() :: keyword()
28 def default_config, do: from_ets()
29
30 @spec default_config(atom()) :: keyword()
31 def default_config(group), do: Keyword.get(from_ets(), group)
32
33 @spec default_config(atom(), atom()) :: keyword()
34 def default_config(group, key), do: get_in(from_ets(), [group, key])
35
36 defp from_ets do
37 [{:config, default_config}] = :ets.lookup(:default_config, :config)
38 default_config
39 end
40 end