igniter/lib/mix/task.ex

31 lines
827 B
Elixir
Raw Normal View History

2024-05-28 15:30:41 +12:00
defmodule Igniter.Mix.Task do
@moduledoc "A behaviour for implementing a Mix task that is enriched to be composable with other Igniter tasks."
2024-05-28 15:30:41 +12:00
@callback supports_umbrella?() :: boolean()
@callback igniter(igniter :: Igniter.t(), argv :: list(String.t())) :: Igniter.t()
defmacro __using__(_opts) do
quote do
use Mix.Task
@behaviour Igniter.Mix.Task
def run(argv) do
if !supports_umbrella?() && Mix.Project.umbrella?() do
raise """
Cannot run #{inspect(__MODULE__)} in an umbrella project.
"""
end
Application.ensure_all_started([:rewrite])
Igniter.new()
|> igniter(argv)
|> Igniter.do_or_dry_run(argv)
2024-05-28 15:30:41 +12:00
end
def supports_umbrella?, do: false
defoverridable supports_umbrella?: 0
end
end
end