Removed Supervisor.Spec

Supervisor.Spec is deprecated so moved to the modern format.
master
Rachel Fae Fox 2022-11-10 13:08:14 -05:00
parent 4fac5895db
commit bd396dc3d4
2 changed files with 31 additions and 15 deletions

View File

@ -4,23 +4,17 @@ defmodule Discordirc do
"""
use Application
alias Discordirc.IRC
alias Discordirc.IrcNetworkSupervisor
alias Discordirc.DiscordHandler
alias Discordirc.WebhookService
def start(_type, _args) do
import Supervisor.Spec
children = [
{DiscordHandler, []},
{WebhookService, []},
{IrcNetworkSupervisor, []}
]
ircnets =
Application.get_env(:discordirc, :networks)
|> Enum.map(fn net -> worker(IRC, [net], id: net.network) end)
children =
ircnets ++
[
Discordirc.DiscordHandler,
Discordirc.WebhookService
]
options = [strategy: :one_for_one, name: Discordirc.Supervisor]
Supervisor.start_link(children, options)
Supervisor.start_link(children, strategy: :one_for_one)
end
end

22
lib/irc_supervisor.ex Executable file
View File

@ -0,0 +1,22 @@
defmodule Discordirc.IrcNetworkSupervisor do
@moduledoc """
Supervises all of the IRC networks.
"""
use Supervisor
alias Discordirc.IRC
def start_link(init_arg) do
Supervisor.start_link(__MODULE__, init_arg, name: __MODULE__)
end
@impl true
def init(_init_arg) do
networks =
Application.get_env(:discordirc, :networks)
|> Enum.map(&%{start: {IRC, :start_link, [&1]}, id: &1.network})
Supervisor.init(networks, strategy: :one_for_one)
end
end