Mix.Task.Compiler behaviour

This module defines the behaviour for a Mix task that does compilation.

A Mix compiler task can be defined by simply using Mix.Task.Compiler in a module whose name starts with Mix.Tasks.Compile. and defining the run/1 function:

defmodule Mix.Tasks.Compile.MyLanguage do
  use Mix.Task.Compiler

  def run(_args) do
    :ok
  end
end

The run/1 function returns an atom indicating the status of the compilation, and optionally can also return a list of "diagnostics" such as warnings or compilation errors. Doing this enables code editors to display issues inline without having to analyze the command-line output.

If the compiler uses manifest files to track stale sources, it should define manifests/0, and if it writes any output to disk it should also define clean/0.

A compiler supports the same attributes for configuration and documentation as a regular Mix task. See Mix.Task for more information.

Summary

Types

Functions

after_compiler(name, fun)

Adds a callback that runs after a given compiler.

Callbacks

clean()

Removes build artifacts and manifests.

manifests()

Lists manifest files for the compiler.

run(list)

Receives command-line arguments and performs compilation. If it produces errors, warnings, or any other diagnostic information, it should return a tuple with the status and a list of diagnostics.

Types

status()

Specs

status() :: :ok | :noop | :error

Functions

after_compiler(name, fun)

Specs

after_compiler(
  atom(),
  ({status(), [Mix.Task.Compiler.Diagnostic.t()]} ->
     {status(), [Mix.Task.Compiler.Diagnostic.t()]})
) :: :ok

Adds a callback that runs after a given compiler.

The callback is invoked after the compiler runs and it receives a tuple with current status and the list of diagnostic. It must return the updated status and diagnostics.

Callbacks

clean()

Specs

clean() :: any()

Removes build artifacts and manifests.

manifests()

Specs

manifests() :: [Path.t()]

Lists manifest files for the compiler.

run(list)

Specs

run([binary()]) :: status() | {status(), [Mix.Task.Compiler.Diagnostic.t()]}

Receives command-line arguments and performs compilation. If it produces errors, warnings, or any other diagnostic information, it should return a tuple with the status and a list of diagnostics.

© 2012 Plataformatec
Licensed under the Apache License, Version 2.0.
https://hexdocs.pm/mix/1.11.2/Mix.Task.Compiler.html