Runtime configuration

Related to #85

Everything should now be configured at runtime, with the exception of
the `Pleroma.HTML` scrubbers (the scrubbers used can be
changed at runtime, but their configuration is compile-time) because
it's building a module with a macro.
This commit is contained in:
href 2018-11-06 19:34:57 +01:00
commit 5bb88fd174
No known key found for this signature in database
GPG key ID: EE8296C1A152C325
18 changed files with 190 additions and 163 deletions

View file

@ -1,13 +1,29 @@
defmodule Pleroma.Config do
def get([key]), do: get(key)
def get([parent_key | keys]) do
Application.get_env(:pleroma, parent_key)
|> get_in(keys)
defmodule Error do
defexception [:message]
end
def get(key) do
Application.get_env(:pleroma, key)
def get(key), do: get(key, nil)
def get([key], default), do: get(key, default)
def get([parent_key | keys], default) do
Application.get_env(:pleroma, parent_key)
|> get_in(keys) || default
end
def get(key, default) do
Application.get_env(:pleroma, key, default)
end
def get!(key) do
value = get(key, nil)
if value == nil do
raise(Error, message: "Missing configuration value: #{inspect(key)}")
else
value
end
end
def put([key], value), do: put(key, value)