Current section

Files

Jump to
igniter lib mix tasks igniter.add_extension.ex
Raw

lib/mix/tasks/igniter.add_extension.ex

# SPDX-FileCopyrightText: 2024 igniter contributors <https://github.com/ash-project/igniter/graphs.contributors>
#
# SPDX-License-Identifier: MIT
defmodule Mix.Tasks.Igniter.AddExtension do
use Igniter.Mix.Task
@example "mix igniter.add_extension phoenix"
@shortdoc "Adds an extension to your `.igniter.exs` configuration file."
@moduledoc """
#{@shortdoc}
The extension can be the module name of an extension,
or the string `phoenix`, which maps to `Igniter.Extensions.Phoenix`.
## Example
```bash
#{@example}
```
"""
def info(_argv, _composing_task) do
%Igniter.Mix.Task.Info{
group: :igniter,
example: @example,
positional: [:extension]
}
end
def igniter(igniter) do
extension = igniter.args.positional.extension
extension =
if extension == "phoenix" do
Igniter.Extensions.Phoenix
else
Igniter.Project.Module.parse(extension)
end
igniter
|> Igniter.Project.IgniterConfig.add_extension(extension)
end
end