From bd396dc3d4fb50c66a1a98c57873be8e3603b71c Mon Sep 17 00:00:00 2001 From: Rachel Fae Fox Date: Thu, 10 Nov 2022 13:08:14 -0500 Subject: [PATCH] Removed Supervisor.Spec Supervisor.Spec is deprecated so moved to the modern format. --- lib/discordirc.ex | 24 +++++++++--------------- lib/irc_supervisor.ex | 22 ++++++++++++++++++++++ 2 files changed, 31 insertions(+), 15 deletions(-) create mode 100755 lib/irc_supervisor.ex diff --git a/lib/discordirc.ex b/lib/discordirc.ex index c2c640e..face559 100755 --- a/lib/discordirc.ex +++ b/lib/discordirc.ex @@ -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 diff --git a/lib/irc_supervisor.ex b/lib/irc_supervisor.ex new file mode 100755 index 0000000..80c9e82 --- /dev/null +++ b/lib/irc_supervisor.ex @@ -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