Browse Source

don't run unnecessary code if hooks are empty list

pull/596/head
Tristan Sloughter 9 years ago
parent
commit
a5569f00e0
1 changed files with 28 additions and 19 deletions
  1. +28
    -19
      src/rebar_hooks.erl

+ 28
- 19
src/rebar_hooks.erl View File

@ -14,12 +14,21 @@ run_all_hooks(Dir, Type, Command, Providers, State) ->
run_hooks(Dir, Type, Command, State).
run_provider_hooks(Dir, Type, Command, Providers, State) ->
case rebar_state:get(State, provider_hooks, []) of
[] ->
ok;
AllHooks ->
TypeHooks = proplists:get_value(Type, AllHooks, []),
run_provider_hooks(Dir, Type, Command, Providers, TypeHooks, State)
end.
run_provider_hooks(_Dir, _Type, _Command, _Providers, [], _State) ->
ok;
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),
AllHooks = rebar_state:get(State1, provider_hooks, []),
TypeHooks = proplists:get_value(Type, AllHooks, []),
HookProviders = proplists:get_all_values(Command, TypeHooks),
case rebar_core:do(HookProviders, State1) of
@ -58,24 +67,24 @@ format_error({bad_provider, Type, Command, Name}) ->
%% ERL = ERLANG_ROOT_DIR/bin/erl
%% ERLC = ERLANG_ROOT_DIR/bin/erl
%%
run_hooks(Dir, pre, Command, State) ->
run_hooks(Dir, pre_hooks, Command, State);
run_hooks(Dir, post, Command, State) ->
run_hooks(Dir, post_hooks, Command, State);
run_hooks(Dir, Type, Command, State) ->
Hooks = case Type of
pre ->
rebar_state:get(State, pre_hooks, []);
post ->
rebar_state:get(State, post_hooks, []);
_ ->
[]
end,
Env = create_env(State),
lists:foreach(fun({_, C, _}=Hook) when C =:= Command ->
apply_hook(Dir, Env, Hook);
({C, _}=Hook) when C =:= Command ->
apply_hook(Dir, Env, Hook);
(_) ->
continue
end, Hooks).
case rebar_state:get(State, Type, []) of
[] ->
ok;
Hooks ->
Env = create_env(State),
lists:foreach(fun({_, C, _}=Hook) when C =:= Command ->
apply_hook(Dir, Env, Hook);
({C, _}=Hook) when C =:= Command ->
apply_hook(Dir, Env, Hook);
(_) ->
continue
end, Hooks)
end.
apply_hook(Dir, Env, {Arch, Command, Hook}) ->
case rebar_utils:is_arch(Arch) of

Loading…
Cancel
Save