mix_under v0.1.1 mix under
mix under
Execute mix tasks under specific umbrella apps, useful for running ecto migrations or tests.
Usage
mix under GLOB [TASK...]
Example
Having an example umbrella app like:
example/
apps/
earth/
heaven/
hell/
This will run test on a single app
$ mix under heaven test
Heaven
..
Finished in 0.05 seconds
1 doctest, 1 test, 0 failures
Randomized with seed 132550
Or you can use a glob (be sure to quote it to prevent your shell from expanding the glob itself)
$ mix under 'he*' test
Heaven
..
Finished in 0.05 seconds
1 doctest, 1 test, 0 failures
Randomized with seed 941219
.Hell
.
Finished in 0.05 seconds
1 doctest, 1 test, 0 failures
Randomized with seed 862534
How about mix cmd --app heaven mix test
?
Well, you can of course use it if you dont mind writing a bit more :), (you can always create an alias in your umbrella to run those long commands for you).
Under any directory
When the glob given to mix under
looks like a path (it contains /
), the glob
is used directly without prepending apps/
to it.
mix under apps/hell test
This means, you can execute mix on any directory, not only below your umbrella.
mix under /other/project test
Under relative task arguments
When the task you are executing expects a path to a file to work with (for example for
executing a script or only one test file), mix under
will convert given relative paths
to absolute.
This comes handy for executing mix from inside your IDE which would probably use paths relative to your project root.
$ mix under earth test apps/earth/test/angel_test.exs
==> (under apps/earth) mix test /home/vic/h/mix_under/example/apps/earth/test/angel_test.exs
Earth.Angel
.
Finished in 0.04 seconds
1 test, 0 failures
Randomized with seed 700004
Relative paths
When you mix under
has
This is something not provided by the more generic mix cmd
.
Installation
def deps do
[
{:mix_under, "~> 0.1.0", only: [:dev, :test]}
]
end
Link to this section Summary
Link to this section Functions
A task needs to implement run
which receives
a list of command line args.
Callback implementation for Mix.Task.run/1
.