PhoenixKit.Install.MissingIgniter (phoenix_kit v2.5.0)

Copy Markdown View Source

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 found

which 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.

Functions

__using__(opts)

(macro)

Defines the body of a stand-in task. The caller supplies its own @moduledoc — generating one from here would hide it from static analysis.

message(task)

@spec message(String.t()) :: String.t()

The guidance printed when a task is invoked without igniter available.