Skip to main content

lib/mix/tasks/star_view.setup.streaming.ex

defmodule Mix.Tasks.StarView.Setup.Streaming.Docs do
  @moduledoc false

  def short_doc(), do: "Adds StarView stream registry to the supervision tree"
  def example(), do: "mix star_view.setup.streaming"
  def long_doc(), do: "#{short_doc()}"
end

if Code.ensure_loaded?(Igniter) do
  defmodule Mix.Tasks.StarView.Setup.Streaming do
    @shortdoc "#{__MODULE__.Docs.short_doc()}"
    @moduledoc __MODULE__.Docs.long_doc()

    use Igniter.Mix.Task

    @impl Igniter.Mix.Task
    def info(_argv, _composing_task) do
      %Igniter.Mix.Task.Info{
        group: :star_view,
        adds_deps: [],
        installs: [],
        example: __MODULE__.Docs.example(),
        only: nil,
        positional: [],
        composes: [],
        schema: [],
        defaults: [],
        aliases: [],
        required: []
      }
    end

    @impl Igniter.Mix.Task
    def igniter(igniter) do
      Igniter.Project.Application.add_new_child(
        igniter,
        StarView.Utility.StreamRegistry,
        after: [Phoenix.PubSub]
      )
    end
  end
else
  defmodule Mix.Tasks.StarView.Setup.Streaming do
    @shortdoc "#{__MODULE__.Docs.short_doc()} | Install `igniter` to use"
    @moduledoc __MODULE__.Docs.long_doc()
    use Mix.Task

    @impl Mix.Task
    def run(_argv) do
      Mix.shell().error("Requires igniter.")
      exit({:shutdown, 1})
    end
  end
end