Stand-in for the mix phoenix_kit.* tasks that cannot exist without igniter.
Igniter is an optional dependency (see mix.exs), and every task that drives
it is wrapped in if Code.ensure_loaded?(Igniter.Mix.Task). Without a
fallback the guard's else branch defines nothing at all, so the task simply
vanishes and Mix reports:
** (Mix) The task "phoenix_kit.update" could not be foundwhich names neither PhoenixKit nor igniter, and leaves a host stranded on an old schema with nothing to search for. This module defines a task that exists purely to explain the situation and print the one line to add.
Why the dep is optional at all
A stock mix phx.new app declares {:igniter, "~> 0.6", only: [:dev, :test]}.
A non-optional dep here resolves for all environments, and Mix refuses to
converge the two — which broke mix igniter.install phoenix_kit on every
freshly generated project. Optional means the host's own declaration wins.
The cost is this case: a host that never declared igniter itself was getting it transitively, and an upgrade drops it. That is what the message covers.
Summary
Functions
Defines the body of a stand-in task. The caller supplies its own
@moduledoc — generating one from here would hide it from static analysis.
The guidance printed when a task is invoked without igniter available.