Code.ensure_compiled(Igniter)
if Code.ensure_loaded?(Igniter) do
defmodule Mix.Tasks.VibeKit.Install do
use Igniter.Mix.Task
alias VibeKit.Install
alias VibeKit.Install.Options
@example "mix igniter.install vibe_kit"
@shortdoc "Installs Elixir Vibe project conventions"
@moduledoc """
#{@shortdoc}
Adds the shared `mix ci` alias, preferred Mix CLI environment, and quality
tooling dependencies used across Elixir Vibe projects.
## Example
```sh
#{@example}
```
## Options
* `--no-reach` - skip Reach and `reach.check --arch --smells`
* `--no-strict-clones` - run ExDNA as `ex_dna` instead of `ex_dna --max-clones 0`
* `--no-ex-slop` - skip ExSlop and `.credo.exs` plugin setup
* `--agents-md` - create `AGENTS.md` with project instructions
* `--claude-md` - create `CLAUDE.md` with project instructions
"""
@impl Igniter.Mix.Task
def info(argv, _parent) do
%Igniter.Mix.Task.Info{
group: :vibe_kit,
adds_deps: Install.deps(argv),
installs: [],
example: @example,
positional: [],
schema: Options.schema(),
defaults: Options.defaults(),
aliases: [],
required: []
}
end
@impl Igniter.Mix.Task
def igniter(igniter) do
Install.run(igniter, igniter.args.options)
end
end
else
defmodule Mix.Tasks.VibeKit.Install do
@moduledoc "Installs Elixir Vibe project conventions"
@shortdoc @moduledoc
use Mix.Task
@impl Mix.Task
def run(_argv) do
Mix.shell().error("""
The task 'vibe_kit.install' requires igniter.
Please install igniter and try again.
For more information, see: https://hexdocs.pm/igniter
""")
exit({:shutdown, 1})
end
end
end