Mix.Task behaviour
A simple module that provides conveniences for creating, loading and manipulating tasks.
A Mix task can be defined by simply using Mix.Task
in a module starting with Mix.Tasks. and defining
the run/1 function:
defmodule Mix.Tasks.Hello do
use Mix.Task
def run(_) do
IO.puts "hello"
end
end
The run/1 function will receive all arguments passed
to the command line.
Attributes
There are a couple attributes available in Mix tasks to configure them in Mix:
@shortdoc- makes the task public with a short description that appears onmix help@recursive- run the task recursively in umbrella projects
Summary
| all_modules() | Returns all loaded tasks. Modules that are not yet loaded
won't show up. Check |
| clear() | Clears all invoked tasks, allowing them to be reinvoked |
| get!(task) | Receives a task name and retrieves the task module |
| load_all() | Loads all tasks in all code paths |
| load_tasks(paths) | Loads all tasks in the given |
| moduledoc(module) | Gets the moduledoc for the given task |
| recursive(module) | Checks if the task should be run recursively for all sub-apps in
umbrella projects. Returns |
| reenable(task) | Reenables a given task so it can be executed again down the stack. If an umbrella project reenables a task it is reenabled for all sub projects |
| run(task, args \\ []) | Runs a |
| shortdoc(module) | Gets the shortdoc for the given task |
| task_name(module) | Returns the task name for the given |
Functions
Returns all loaded tasks. Modules that are not yet loaded
won't show up. Check load_all/0 if you want to preload all tasks.
Receives a task name and retrieves the task module.
Exceptions
Mix.NoTaskError- raised if the task could not be found;Mix.InvalidTaskError- raised if the task is not a validMix.Task
Gets the moduledoc for the given task module.
Returns the moduledoc or nil.
Checks if the task should be run recursively for all sub-apps in
umbrella projects. Returns true, false or :both.
Reenables a given task so it can be executed again down the stack. If an umbrella project reenables a task it is reenabled for all sub projects.
Runs a task with the given args.
If the task was not yet invoked, it runs the task and returns the result.
If the task was already invoked, it does not run the task
again and simply aborts with :noop.
It may raise an exception if the task was not found
or it is invalid. Check get!/1 for more information.
Gets the shortdoc for the given task module.
Returns the shortdoc or nil.