33 lines
878 B
Elixir
33 lines
878 B
Elixir
|
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
|