podbox_ash/lib/podbox/download/supervisor.ex

33 lines
878 B
Elixir
Raw Normal View History

2024-05-22 13:17:21 +12:00
defmodule Podbox.Download.Supervisor do
@moduledoc """
A Supervision tree for managing the download system.
"""
use Supervisor
alias Podbox.Download
@doc false
@spec start_link(Keyword.t()) :: Supervisor.on_start()
def start_link(opts), do: Supervisor.start_link(__MODULE__, opts, name: __MODULE__)
@doc false
@impl true
def init(_opts) do
[
{Finch, name: Download.Finch},
Download.ConnectivityMonitor
]
|> maybe_append(Download.Broadway, start_broadway?())
|> Supervisor.init(strategy: :one_for_one)
end
defp start_broadway? do
:podbox
|> Application.get_env(Podbox.Download, [])
|> Keyword.get(:start_broadway?, true)
end
defp maybe_append(children, _child_spec, falsy) when falsy in [nil, false], do: children
defp maybe_append(children, child_spec, _), do: Enum.concat(children, [child_spec])
end