diff options
author | Tristan Sloughter <t@crashfast.com> | 2014-12-24 09:22:24 -0600 |
---|---|---|
committer | Tristan Sloughter <t@crashfast.com> | 2014-12-24 09:22:24 -0600 |
commit | b4c579b80d5982dd26f3db4b31c66896c3a12f38 (patch) | |
tree | 22bff241c8236ae5a4fe9eeee68471a6cb3dc410 | |
parent | 56b36a37fcd8f0a19af463a8cd98359be635079f (diff) |
include providers listed in plugins env
-rw-r--r-- | src/rebar.app.src | 1 | ||||
-rw-r--r-- | src/rebar_plugins.erl | 32 |
2 files changed, 19 insertions, 14 deletions
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) -> |