mirror of
https://github.com/correl/rebar.git
synced 2024-12-18 03:00:17 +00:00
Re-adding support for plugin modules
--HG-- extra : rebase_source : 90052500da62af1d32337f2d540acb39fdf67db4
This commit is contained in:
parent
a86cb0b4fa
commit
9dda9c2578
1 changed files with 39 additions and 1 deletions
|
@ -292,8 +292,12 @@ process_dir(Dir, ParentConfig, Command, DirSet) ->
|
||||||
%% caused it to change
|
%% caused it to change
|
||||||
ok = file:set_cwd(Dir),
|
ok = file:set_cwd(Dir),
|
||||||
|
|
||||||
|
%% Get the list of plug-in modules from rebar.config. These modules are
|
||||||
|
%% processed LAST and do not participate in preprocess.
|
||||||
|
{ok, PluginModules} = plugin_modules(Config),
|
||||||
|
|
||||||
%% Execute the current command on this directory
|
%% Execute the current command on this directory
|
||||||
execute(Command, Modules, Config, ModuleSetFile),
|
execute(Command, Modules ++ PluginModules, Config, ModuleSetFile),
|
||||||
|
|
||||||
%% Mark the current directory as processed
|
%% Mark the current directory as processed
|
||||||
DirSet3 = sets:add_element(Dir, DirSet2),
|
DirSet3 = sets:add_element(Dir, DirSet2),
|
||||||
|
@ -317,6 +321,7 @@ process_dir(Dir, ParentConfig, Command, DirSet) ->
|
||||||
end.
|
end.
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
%%
|
%%
|
||||||
%% Given a list of directories and a set of previously processed directories,
|
%% Given a list of directories and a set of previously processed directories,
|
||||||
%% process each one we haven't seen yet
|
%% process each one we haven't seen yet
|
||||||
|
@ -443,3 +448,36 @@ acc_modules([], _Command, _Config, _File, Acc) ->
|
||||||
acc_modules([Module | Rest], Command, Config, File, Acc) ->
|
acc_modules([Module | Rest], Command, Config, File, Acc) ->
|
||||||
{ok, Dirs} = Module:Command(Config, File),
|
{ok, Dirs} = Module:Command(Config, File),
|
||||||
acc_modules(Rest, Command, Config, File, Acc ++ Dirs).
|
acc_modules(Rest, Command, Config, File, Acc ++ Dirs).
|
||||||
|
|
||||||
|
%%
|
||||||
|
%% Return a flat list of rebar plugin modules.
|
||||||
|
%%
|
||||||
|
plugin_modules(Config) ->
|
||||||
|
Modules = lists:flatten(rebar_config:get_all(Config, rebar_plugins)),
|
||||||
|
plugin_modules(Config, ulist(Modules)).
|
||||||
|
|
||||||
|
ulist(L) ->
|
||||||
|
ulist(L, []).
|
||||||
|
|
||||||
|
ulist([], Acc) ->
|
||||||
|
lists:reverse(Acc);
|
||||||
|
ulist([H | T], Acc) ->
|
||||||
|
case lists:is_member(H, Acc) of
|
||||||
|
true ->
|
||||||
|
ulist(T, Acc);
|
||||||
|
false ->
|
||||||
|
ulist(T, [H | Acc])
|
||||||
|
end.
|
||||||
|
|
||||||
|
plugin_modules(_Config, []) ->
|
||||||
|
{ok, []};
|
||||||
|
plugin_modules(_Config, Modules) ->
|
||||||
|
FoundModules = [M || M <- Modules, code:which(M) =/= non_existing],
|
||||||
|
case (Modules =:= FoundModules) of
|
||||||
|
true ->
|
||||||
|
ok;
|
||||||
|
false ->
|
||||||
|
?WARN("Missing plugins: ~p\n", [Modules -- FoundModules]),
|
||||||
|
ok
|
||||||
|
end,
|
||||||
|
{ok, FoundModules}.
|
||||||
|
|
Loading…
Reference in a new issue