Hello again fine folks of the elixir community,
I am struggling to write a small mix install task with Igniter. Basically I want to create some files in the install task, but if I create a new mix project with igniter.new foo --install my_app
no matter what I try, my task does not seem to get called.
I a nutshell this is what I am trying to do:
$ mix igniter.new my_app
$ cd my_app
$ mix igniter.gen.task my_app.install
Inside the my_app.install.ex
file I changed the igniter(igniter)
function to look like this:
@impl Igniter.Mix.Task
def igniter(igniter) do
# Do your work here and return an updated igniter
igniter
|> Igniter.create_new_file(Path.expand("lib/foo.ex"), foo_ex())
|> Igniter.add_notice("mix my_app.install finished.")
end
defp foo_ex() do
"""
defmodule MyApp.Foo do
end
"""
end
When I try to run the installer in a new mix project (with igniter.new --install
or with igniter.new
+ igniter.install
afterwards) I always get the message No proposed content changes!
:
mix igniter.new dummy --install my_app@path:../../my_app --verbose
* creating README.md
* creating .formatter.exs
* creating .gitignore
* creating mix.exs
* creating lib
* creating lib/dummy.ex
* creating test
* creating test/test_helper.exs
* creating test/dummy_test.exs
Your Mix project was created successfully.
You can use "mix" to compile it, test it, and more:
cd dummy
mix test
Run "mix help" for more commands.
Fetching and compiling dependencies ✔
Updating project's igniter dependency:
Updating project's igniter dependency: ✔
installing igniter:
installing igniter: ✔
compiling igniter:
===> Analyzing applications...
===> Compiling telemetry
compiling igniter: ✔
setting up igniter:
setting up igniter: ✔
compiling my_app ✔
`my_app.install` ✔
The following installer was found and executed: `my_app.install`:
No proposed content changes!
Successfully installed:
* my_app
I also tried with a git URI instead of a local file URI for the dependency but same result.
When I call the mix my_app.install
task directly from the my_app
project I do get the desired output:
Igniter:
Create: lib/my_app/foo.ex
1 |defmodule MyApp.Foo do
2 |end
3 |
What do I miss? I am grateful for any pointers and hints.