it is changed in compile time
[akkoma] / lib / pleroma / config / transfer_task.ex
1 defmodule Pleroma.Config.TransferTask do
2 use Task
3 alias Pleroma.Web.AdminAPI.Config
4
5 def start_link do
6 load_and_update_env()
7 if Pleroma.Config.get(:env) == :test, do: Ecto.Adapters.SQL.Sandbox.checkin(Pleroma.Repo)
8 :ignore
9 end
10
11 def load_and_update_env do
12 if Pleroma.Config.get([:instance, :dynamic_configuration]) do
13 Pleroma.Repo.all(Config)
14 |> Enum.each(&update_env(&1))
15 end
16 end
17
18 defp update_env(setting) do
19 try do
20 key =
21 if String.starts_with?(setting.key, "Pleroma.") do
22 "Elixir." <> setting.key
23 else
24 setting.key
25 end
26
27 Application.put_env(
28 :pleroma,
29 String.to_existing_atom(key),
30 Config.from_binary(setting.value)
31 )
32 rescue
33 e ->
34 require Logger
35
36 Logger.warn(
37 "updating env causes error, key: #{inspect(setting.key)}, error: #{inspect(e)}"
38 )
39 end
40 end
41 end