From b4c579b80d5982dd26f3db4b31c66896c3a12f38 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Wed, 24 Dec 2014 09:22:24 -0600 Subject: include providers listed in plugins env --- src/rebar.app.src | 1 - src/rebar_plugins.erl | 32 +++++++++++++++++++------------- 2 files changed, 19 insertions(+), 14 deletions(-) (limited to 'src') diff --git a/src/rebar.app.src b/src/rebar.app.src index 5f18321..1a1e528 100644 --- a/src/rebar.app.src +++ b/src/rebar.app.src @@ -21,7 +21,6 @@ %% Default log level {log_level, warn}, - %% any_dir processing modules {providers, [rebar_prv_as, rebar_prv_clean, rebar_prv_deps, diff --git a/src/rebar_plugins.erl b/src/rebar_plugins.erl index 000ccdc..e1f529d 100644 --- a/src/rebar_plugins.erl +++ b/src/rebar_plugins.erl @@ -18,9 +18,9 @@ install(State) -> DepsDir = rebar_dir:deps_dir(State1), expand_plugins(DepsDir), Plugins = rebar_state:get(State1, plugins, []), - PluginProviders = rebar_utils:filtermap(fun(Plugin) -> - handle_plugin(Plugin, State1) - end, Plugins), + PluginProviders = lists:flatten(rebar_utils:filtermap(fun(Plugin) -> + handle_plugin(Plugin, State1) + end, Plugins)), State2 = rebar_state:set(State1, deps_dir, OldDepsDir), {ok, PluginProviders, State2}. @@ -55,16 +55,22 @@ plugin_providers(Plugin) when is_atom(Plugin) -> validate_plugin(Plugin). validate_plugin(Plugin) -> - Exports = sets:from_list(Plugin:module_info(exports)), - Required = sets:from_list([{init,1}, - {do,1}, - {format_error,1}]), - case sets:is_subset(Required, Exports) of - false -> - ?WARN("Plugin ~p is not a provider. It will not be used.~n", [Plugin]), - false; - true -> - {true, Plugin} + application:load(Plugin), + case application:get_env(Plugin, providers) of + {ok, Providers} -> + {true, Providers}; + undefined -> + Exports = sets:from_list(Plugin:module_info(exports)), + Required = sets:from_list([{init,1}, + {do,1}, + {format_error,1}]), + case sets:is_subset(Required, Exports) of + false -> + ?WARN("Plugin ~p is not a provider. It will not be used.~n", [Plugin]), + false; + true -> + {true, Plugin} + end end. expand_plugins(Dir) -> -- cgit v1.1