瀏覽代碼

Merge pull request #1194 from tsloughter/provider_hook_paths

don't needlessly update the code path twice if no hooks to run
pull/1198/head
Tristan Sloughter 9 年之前
父節點
當前提交
9f5a30f3d7
共有 1 個文件被更改,包括 16 次插入12 次删除
  1. +16
    -12
      src/rebar_hooks.erl

+ 16
- 12
src/rebar_hooks.erl 查看文件

@ -38,18 +38,22 @@ run_provider_hooks(Dir, Type, Command, Providers, Opts, State) ->
run_provider_hooks_(_Dir, _Type, _Command, _Providers, [], State) -> run_provider_hooks_(_Dir, _Type, _Command, _Providers, [], State) ->
State; State;
run_provider_hooks_(Dir, Type, Command, Providers, TypeHooks, State) -> run_provider_hooks_(Dir, Type, Command, Providers, TypeHooks, State) ->
PluginDepsPaths = rebar_state:code_paths(State, all_plugin_deps),
code:add_pathsa(PluginDepsPaths),
Providers1 = rebar_state:providers(State),
State1 = rebar_state:providers(rebar_state:dir(State, Dir), Providers++Providers1),
HookProviders = proplists:get_all_values(Command, TypeHooks),
case rebar_core:do(HookProviders, State1) of
{error, ProviderName} ->
?DEBUG(format_error({bad_provider, Type, Command, ProviderName}), []),
throw(?PRV_ERROR({bad_provider, Type, Command, ProviderName}));
{ok, State2} ->
rebar_utils:remove_from_code_path(PluginDepsPaths),
State2
case proplists:get_all_values(Command, TypeHooks) of
[] ->
State;
HookProviders ->
PluginDepsPaths = lists:usort(rebar_state:code_paths(State, all_plugin_deps)),
code:add_pathsa(PluginDepsPaths),
Providers1 = rebar_state:providers(State),
State1 = rebar_state:providers(rebar_state:dir(State, Dir), Providers++Providers1),
case rebar_core:do(HookProviders, State1) of
{error, ProviderName} ->
?DEBUG(format_error({bad_provider, Type, Command, ProviderName}), []),
throw(?PRV_ERROR({bad_provider, Type, Command, ProviderName}));
{ok, State2} ->
rebar_utils:remove_from_code_path(PluginDepsPaths),
State2
end
end. end.
format_error({bad_provider, Type, Command, {Name, Namespace}}) -> format_error({bad_provider, Type, Command, {Name, Namespace}}) ->

Loading…
取消
儲存