Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Preventing a mix task being included when your project is included as a mix dep

An Elixir library I'm writing has two custom mix tasks, one intended to be used by users who have made my library a dependency of their project, one intended to be used only within my project.

The problem here is that both mix tasks are available to users in their projects after they have added mine as a dep.

How do I prevent this? I tried to avoid the task in package: [ files: [ etc ] ] in my Mix config, but it was still available in my test project that specifies my library as a dep via git.

like image 615
lpil Avatar asked Aug 23 '15 16:08

lpil


1 Answers

Currently Mix does not really support the idea of private tasks directly. A couple options are:

  • Define it in your mix.exs (for example, as an alias) or create it inside tasks/my_task.exs and Code.require_file "tasks/my_task.exs" on top of your mix.exs. The second option is not great as you will execute the code that defines a task on every mix command you use

  • Just use a script. Create a scripts directory if you want and then, when you want to run it, just do: mix run scripts/do_x.ex arg1 arg2 arg3

like image 185
José Valim Avatar answered Sep 19 '22 16:09

José Valim