Mix.Task.Compiler behaviour View Source
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.
Link to this section Summary
Callbacks
Removes build artifacts and manifests
Lists manifest files for the compiler
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
Link to this section Callbacks
clean()
View Source
(optional)
clean() :: any()
clean() :: any()
Removes build artifacts and manifests.
manifests()
View Source
(optional)
manifests() :: [Path.t()]
manifests() :: [Path.t()]
Lists manifest files for the compiler.
run(list)
View Source
run([binary()]) :: {:ok | :noop | :error, [Mix.Task.Compiler.Diagnostic.t()]}
run([binary()]) :: {:ok | :noop | :error, [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.