diff options
author | Tristan Sloughter <tristan.sloughter@gmail.com> | 2014-12-24 11:38:49 -0600 |
---|---|---|
committer | Tristan Sloughter <tristan.sloughter@gmail.com> | 2014-12-24 11:38:49 -0600 |
commit | faeb3d3989d47fb8680fdef3a598ebc4fae62f65 (patch) | |
tree | fd6c0c9183bc069d37c5b5002ff24628aebbf171 /src/rebar_plugins.erl | |
parent | b1bfc03ddfeec0bdde4330a73bf824daf80e025d (diff) | |
parent | b4c579b80d5982dd26f3db4b31c66896c3a12f38 (diff) |
Merge pull request #76 from tsloughter/master
Small release fix and new plugin loading
Diffstat (limited to 'src/rebar_plugins.erl')
-rw-r--r-- | src/rebar_plugins.erl | 32 |
1 files changed, 19 insertions, 13 deletions
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) -> |