Current section

Files

Jump to
rebar3_elixir_plugin src rebar3_elixir_plugin.erl
Raw

src/rebar3_elixir_plugin.erl

-module(rebar3_elixir_plugin).
-export([init/1]).
init(State) ->
State1 = rebar3_elixir_plugin_utils:add_elixir(State),
State2 = rebar_state:add_resource(State1, {hex, rebar3_elixir_plugin_hex}),
State3 = rebar_state:add_resource(State2, {iex_dep, rebar3_elixir_plugin_dep}),
State4 =
case erlang:function_exported(rebar_state, add_project_builder, 3) of
true -> rebar_state:add_project_builder(State3, mix, rebar3_elixir_plugin_compiler);
_ -> State3
end,
State5 = rebar3_elixir_plugin_utils:add_elixir_to_path(State4),
LibDir = rebar3_elixir_plugin_utils:get_lib_dir(State5),
RelxConfig = rebar_state:get(State5, relx, []),
NewRelxConfig =
case lists:keyfind(lib_dirs, 1, RelxConfig) of
{lib_dirs, OldLibDir} ->
NewLibDir = OldLibDir ++ [LibDir],
lists:keyreplace(lib_dirs, 1, RelxConfig, {lib_dirs, NewLibDir});
false ->
[{lib_dirs, [LibDir]}] ++ RelxConfig
end,
State6 = rebar_state:set(State4, relx, NewRelxConfig),
{ok, State6}.