Packages

A framework for building chat bots

Current section

Files

Jump to
clover lib robot supervisor.ex
Raw

lib/robot/supervisor.ex

defmodule Clover.Robot.Supervisor do
alias Clover.{
Adapter,
Robot
}
def start_link({name, robot_mod, {adapter, adapter_opts}}, opts) do
Supervisor.start_link(__MODULE__, {name, robot_mod, {adapter, adapter_opts}}, opts)
end
def init({name, robot_mod, {adapter, adapter_opts}}) do
children = [
robot_mod.child_spec(name, name: Robot.via_tuple(name)),
adapter.child_spec({name, adapter_opts}, name: Adapter.via_tuple(name))
]
Supervisor.init(children, strategy: :rest_for_one)
end
def child_spec(arg, opts) do
default = %{
id: __MODULE__,
start: {__MODULE__, :start_link, [arg, opts]}
}
Supervisor.child_spec(default, opts)
end
end