Get port and servers from env

This commit is contained in:
Broks Randolfs Gailītis 2025-08-18 20:10:07 +03:00
parent 6da72d5801
commit c2f0fd6fcd

View File

@ -5,6 +5,11 @@ defmodule MessageServer.Application do
@impl true
def start(_type, _args) do
server_id = get_server_id()
port = get_port()
servers = parse_servers()
Logger.info("Starting MessageServer #{server_id} on port #{port}")
Logger.info("Known servers: #{inspect(servers)}")
children = [
{MessageServer.Storage, server_id}
@ -19,4 +24,20 @@ defmodule MessageServer.Application do
System.get_env("SERVER_ID") ||
raise "SERVER_ID is required"
end
@spec get_port() :: integer()
def get_port() do
System.get_env("PORT", "4000") |> String.to_integer()
end
@spec parse_servers() :: map()
defp parse_servers() do
System.get_env("SERVERS", "")
|> String.split(",")
|> Enum.reject(&(&1 == ""))
|> Enum.into(%{}, fn server_string ->
[id, host, port] = String.split(server_string, ":")
{id, %{host: host, port: String.to_integer(port)}}
end)
end
end