From 257e7fb6678ad55473efe5800434007e20639784 Mon Sep 17 00:00:00 2001 From: Tristan Sloughter Date: Sat, 4 Apr 2015 20:22:05 -0500 Subject: remove old apply_hooks. now provider hooks are explicitly run --- src/rebar_state.erl | 55 +++++++++-------------------------------------------- 1 file changed, 9 insertions(+), 46 deletions(-) (limited to 'src') diff --git a/src/rebar_state.erl b/src/rebar_state.erl index af481bf..d421fdd 100644 --- a/src/rebar_state.erl +++ b/src/rebar_state.erl @@ -320,62 +320,25 @@ add_provider(State=#state_t{providers=Providers}, Provider) -> create_logic_providers(ProviderModules, State0) -> try - State1 = lists:foldl(fun(ProviderMod, StateAcc) -> - case providers:new(ProviderMod, StateAcc) of - {error, Reason} -> - ?ERROR(Reason++"~n", []), - StateAcc; - {ok, StateAcc1} -> - StateAcc1 - end - end, State0, ProviderModules), - apply_hooks(State1) + lists:foldl(fun(ProviderMod, StateAcc) -> + case providers:new(ProviderMod, StateAcc) of + {error, Reason} -> + ?ERROR(Reason++"~n", []), + StateAcc; + {ok, StateAcc1} -> + StateAcc1 + end + end, State0, ProviderModules) catch C:T -> ?DEBUG("~p: ~p ~p", [C, T, erlang:get_stacktrace()]), throw({error, "Failed creating providers. Run with DEBUG=1 for stacktrace."}) end. -apply_hooks(State0) -> - try - Hooks = rebar_state:get(State0, provider_hooks, []), - PreHooks = proplists:get_value(pre, Hooks, []), - PostHooks = proplists:get_value(post, Hooks, []), - State1 = lists:foldl(fun({Target, Hook}, StateAcc) -> - prepend_hook(StateAcc, Target, Hook) - end, State0, PreHooks), - lists:foldl(fun({Target, Hook}, StateAcc) -> - append_hook(StateAcc, Target, Hook) - end, State1, PostHooks) - catch - C:T -> - ?DEBUG("~p: ~p ~p", [C, T, erlang:get_stacktrace()]), - throw({error, "Failed parsing provider hooks. Run with DEBUG=1 for stacktrace."}) - end. - %% =================================================================== %% Internal functions %% =================================================================== -prepend_hook(State=#state_t{providers=Providers}, Target, Hook) -> - State#state_t{providers=add_hook(pre, Providers, Target, Hook)}. - -append_hook(State=#state_t{providers=Providers}, Target, Hook) -> - State#state_t{providers=add_hook(post, Providers, Target, Hook)}. - -add_hook(Which, Providers, Target, Hook) -> - Provider = providers:get_provider(Target, Providers), - Hooks = providers:hooks(Provider), - NewHooks = add_hook(Which, Hooks, Hook), - NewProvider = providers:hooks(Provider, NewHooks), - [NewProvider | lists:delete(Provider, Providers)]. - -add_hook(pre, {PreHooks, PostHooks}, Hook) -> - {[Hook | PreHooks], PostHooks}; -add_hook(post, {PreHooks, PostHooks}, Hook) -> - {PreHooks, [Hook | PostHooks]}. - - %% Sort the list in proplist-order, meaning that `{a,b}' and `{a,c}' %% both compare as usual, and `a' and `b' do the same, but `a' and `{a,b}' will %% compare based on the first element of the key, and in order. So the following -- cgit v1.1