pleroma-docker/docker-config.exs

72 lines
2.2 KiB
Elixir
Raw Normal View History

2018-04-08 10:15:44 -04:00
use Mix.Config
2018-04-08 11:04:06 -04:00
defmodule Docker do
2018-08-20 21:19:42 -04:00
def env(shortname, verbatim \\ false) do
# Get var
name = ((if verbatim, do: "", else: "pleroma_") <> Atom.to_string(shortname)) |> String.upcase()
raw_var = System.get_env(name)
2018-04-08 11:04:06 -04:00
2018-08-20 21:19:42 -04:00
if raw_var == nil do
raise "Could not find #{name} in environment. Please define it and try again."
2018-04-08 11:04:06 -04:00
end
2018-08-20 21:19:42 -04:00
# Match type and cast if needed
if String.contains?(raw_var, ":") do
var_parts = String.split(raw_var, ":", parts: 2)
type = Enum.at(var_parts, 0)
var = Enum.at(var_parts, 1)
func = case type do
"int" -> fn(x) -> Integer.parse(x) |> elem(0) end
"bool" -> fn(x) -> x == "true" end
"string" -> fn(x) -> x end
_ -> if verbatim do
fn(x) -> x end
else
raise "Unknown type #{type} used in variable #{raw_var}."
end
end
func.(var)
else
raw_var
end
2018-04-08 11:04:06 -04:00
end
2018-04-08 10:15:44 -04:00
end
2018-06-07 06:37:17 -04:00
config :logger, level: String.to_atom(Docker.env(:loglevel) || "info")
2018-04-08 10:15:44 -04:00
config :pleroma, Pleroma.Web.Endpoint,
url: [
2018-04-08 11:04:06 -04:00
host: Docker.env(:url),
scheme: Docker.env(:scheme),
2018-06-03 19:48:35 -04:00
port: Docker.env(:port)
2018-04-08 10:15:44 -04:00
],
2018-04-08 11:04:06 -04:00
secret_key_base: Docker.env(:secret_key_base)
2018-04-08 10:15:44 -04:00
2018-04-08 18:33:52 -04:00
config :pleroma, Pleroma.Upload,
uploads: Docker.env(:uploads_path)
config :pleroma, :chat,
enabled: Docker.env(:chat_enabled)
2018-04-08 10:15:44 -04:00
config :pleroma, :instance,
2018-04-08 18:33:52 -04:00
name: Docker.env(:name),
email: Docker.env(:admin_email),
limit: Docker.env(:max_notice_chars),
2018-04-08 18:33:52 -04:00
registrations_open: Docker.env(:registrations_open)
2018-04-08 10:15:44 -04:00
config :pleroma, :media_proxy,
2018-04-08 18:33:52 -04:00
enabled: Docker.env(:media_proxy_enabled),
redirect_on_failure: Docker.env(:media_proxy_redirect_on_failure),
base_url: Docker.env(:media_proxy_url)
2018-04-08 10:15:44 -04:00
config :pleroma, Pleroma.Repo,
2018-04-08 18:33:52 -04:00
adapter: Ecto.Adapters.Postgres,
username: Docker.env(:postgres_user, true),
password: Docker.env(:postgres_password, true),
database: Docker.env(:postgres_db, true),
hostname: Docker.env(:postgres_ip, true),
pool_size: Docker.env(:db_pool_size)