Browse Source

rebar_plugins in rebar_config to allow extensions

Bob Ippolito 15 years ago
parent
commit
92be7a38bf
1 changed files with 21 additions and 1 deletions
  1. +21
    -1
      src/rebar_core.erl

+ 21
- 1
src/rebar_core.erl View File

@ -274,7 +274,12 @@ process_dir(Dir, ParentConfig, Commands) ->
%% that are processed in addition to modules associated with this directory %% that are processed in addition to modules associated with this directory
%% type. These any_dir modules are processed FIRST. %% type. These any_dir modules are processed FIRST.
{ok, AnyDirModules} = application:get_env(rebar, any_dir_modules), {ok, AnyDirModules} = application:get_env(rebar, any_dir_modules),
Modules = AnyDirModules ++ DirModules,
%% Get the list of plug-in modules from rebar.config. These modules are
%% processed LAST.
{ok, PluginModules} = plugin_modules(Config),
Modules = AnyDirModules ++ DirModules ++ PluginModules,
%% Give the modules a chance to tweak config and indicate if there %% Give the modules a chance to tweak config and indicate if there
%% are any other dirs that might need processing first. %% are any other dirs that might need processing first.
@ -322,6 +327,21 @@ choose_module_set([{Fn, Modules} | Rest], Dir) ->
choose_module_set(Rest, Dir) choose_module_set(Rest, Dir)
end. end.
%%
%% Return a flat list of rebar plugin modules.
%%
plugin_modules(Config) ->
Modules = lists:flatten(rebar_config:get_all(Config, rebar_plugins)),
FoundModules = [M || M <- Modules, code:which(M) =/= non_existing],
case (Modules =/= FoundModules) of
true ->
ok;
false ->
?DEBUG("Missing plugins: ~p\n", [Modules -- FoundModules]),
ok
end,
{ok, FoundModules}.
%% %%
%% Return .app file if the current directory is an OTP app %% Return .app file if the current directory is an OTP app
%% %%

Loading…
Cancel
Save