lib/walex/replication/supervisor.ex

defmodule WalEx.Replication.Supervisor do
  use Supervisor

  alias WalEx.Replication.Server

  def start_link(opts) do
    app_name = Keyword.get(opts, :app_name)
    name = WalEx.Config.Registry.set_name(:set_supervisor, __MODULE__, app_name)

    Supervisor.start_link(__MODULE__, configs: opts, name: name)
  end

  @impl true
  def init(opts) do
    app_name =
      opts
      |> Keyword.get(:configs)
      |> Keyword.get(:app_name)

    children = [{Server, app_name: app_name}]

    Supervisor.init(children, strategy: :one_for_all)
  end
end