Files
omnibot/lib/supervisor.ex
Alek Ratzloff 67ba7a5847 WIP: Wordbot
Wordbot is a little more complex of a bot module and I've been working
on it here.

Other than wordbot module, a few minor tweaks have been added all around
that don't really affect anything.

Signed-off-by: Alek Ratzloff <alekratz@gmail.com>
2020-07-01 12:04:51 -07:00

31 lines
795 B
Elixir

defmodule Omnibot.Supervisor do
@moduledoc false
use Supervisor
require IEx
def start_link(opts) do
Supervisor.start_link(__MODULE__, :ok, opts)
end
@impl true
def init(:ok) do
{_, bindings} = Code.eval_file("omnibot.exs")
cfg = bindings[:config]
children = [
{Task.Supervisor, name: Omnibot.RouterSupervisor, strategy: :one_for_one},
{Omnibot.State, cfg: cfg, name: Omnibot.State},
{Omnibot.ModuleSupervisor, cfg: cfg, name: Omnibot.ModuleSupervisor},
] ++ unless IEx.started?(),
do: [{Omnibot.Irc, name: Omnibot.Irc}],
else: []
# TODO : how to handle config reloading?
# :one_for_all here because the RouterSupervisor and IRC server are co-dependent
Supervisor.init(children, strategy: :one_for_all)
end
end