defmodule Mixpanel.Supervisor do use Supervisor @moduledoc """ A simple supervisor which manages API Client process alive. """ @spec start_link(any) :: :ignore | {:error, any} | {:ok, pid} def start_link(clients) do Supervisor.start_link(__MODULE__, clients, name: __MODULE__) end @spec init(keyword) :: {:ok, {Supervisor.sup_flags(), [Supervisor.child_spec() | (old_erlang_child_spec :: :supervisor.child_spec())]}} def init(clients) do children = for {client, config} <- clients do Supervisor.child_spec({Mixpanel.Client, config}, id: client) end Supervisor.init(children, strategy: :one_for_one) end end