Packages

Protocol-based mocks and explicit contracts in Elixir

Current section

Files

Jump to
promox lib mix tasks compile.promox.ex
Raw

lib/mix/tasks/compile.promox.ex

defmodule Mix.Tasks.Compile.Promox do
use Mix.Task.Compiler
require Promox
@spec run(OptionParser.argv()) :: :ok
def run(args) do
:code.get_path()
|> Protocol.extract_protocols()
|> Enum.map(fn p ->
Promox.defmock(for: p)
impls = [Promox | Protocol.extract_impls(p, :code.get_path())]
Protocol.consolidate(p, impls)
end)
:ok
end
end