View Source Igniter.Mix.Task.Info (igniter v0.4.8)
Info for an Igniter.Mix.Task
, returned from the info/2
callback
Configurable Keys
schema
- The option schema for this task, in the format given toOptionParser
, i.e[name: :string]
. See the schema section for more.defaults
- Default values for options in the schema.required
- A list of flags that are required for this task to run.positional
- A list of positional arguments that this task accepts. A list of atoms, or a keyword list with the option and config. See the positional arguments section for more.aliases
- A map of aliases to the schema keys.composes
- A list of tasks that this task might compose.installs
- A list of dependencies that should be installed before continuing.adds_deps
- A list of dependencies that should be added to themix.exs
, but do not need to be installed before continuing.extra_args?
- Whether or not to allow extra arguments. This forces all tasks that compose this task to allow extra args as well.example
- An example usage of the task. This is used in the help output.
Your task should always use switches
and not strict
to validate provided options!
Options and Arguments
Command line args are automatically parsed into igniter.args
using this struct's configuration.
@impl Igniter.Mix.Task
def igniter(igniter) do
positional = igniter.args.positional
options = igniter.args.options
end
If you need to do custom validation or parsing, you can implement Igniter.Mix.Task.parse_argv/1
and return an Igniter.Mix.Task.Args
struct. If helpful, the positional_args!/1
and
options!/1
macros can be used to parse positional arguments and options/flags using your
info configuration.
@impl Igniter.Mix.Task
def parse_argv(argv) do
{positional, argv_flags} = positional_args!(argv)
options = options!(argv_flags)
# custom validation or additional parsing
%Igniter.Mix.Task.Args{
argv: argv,
argv_flags: argv_flags,
positional: positional,
options: options
}
end
Options
The schema is an option parser schema, and OptionParser
is used to parse the options, with
a few noteable differences.
- The defaults from the
defaults
option in your task info are applied. - The
:keep
type is automatically aggregated into a list. - The
:csv
option automatically splits the value on commas, and allows it to be specified multiple times.
Positional Arguments
Each positional argument can provide the following options:
:optional
- Whether or not the argument is optional. Defaults tofalse
.:rest
- Whether or not the argument consumes the rest of the positional arguments. Defaults tofalse
.The value will be converted to a list automatically.
Summary
Types
@type t() :: %Igniter.Mix.Task.Info{ adds_deps: [{atom(), String.t()}], alias_conflicts: %{optional(atom()) => [String.t()]}, aliases: Keyword.t(), composes: [String.t()], defaults: Keyword.t(), example: String.t() | nil, extra_args?: boolean(), flag_conflicts: %{optional(atom()) => [String.t()]}, group: atom() | nil, installs: [{atom(), String.t()}], only: [atom()] | nil, positional: [atom() | {atom(), optional: boolean(), rest: boolean()}], required: [atom()], schema: Keyword.t() }