diff options
author | Tristan Sloughter <t@crashfast.com> | 2014-09-18 19:14:33 -0500 |
---|---|---|
committer | Tristan Sloughter <t@crashfast.com> | 2014-09-18 19:15:34 -0500 |
commit | d78f66291f0f82b6c50193b041c7a26b4ced9037 (patch) | |
tree | 972f2b9061e17f24c392b8c1e9a60ef2998280a2 /src/rebar_state.erl | |
parent | 73ee56eace71065ff7fa15f0106c2f559a6e632b (diff) |
add support for plugins as pre and post hooks
Diffstat (limited to 'src/rebar_state.erl')
-rw-r--r-- | src/rebar_state.erl | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/rebar_state.erl b/src/rebar_state.erl index fa9aa96..706c528 100644 --- a/src/rebar_state.erl +++ b/src/rebar_state.erl @@ -14,6 +14,7 @@ binary_deps/1, binary_deps/2, src_deps/1, src_deps/2, + prepend_hook/3, append_hook/3, hooks/2, providers/1, providers/2, add_provider/2]). -include("rebar.hrl"). @@ -39,6 +40,7 @@ project_apps = ordsets:new() :: ordsets:ordset(rebar_app_info:t()), providers = [], + hooks = [], skip_dirs = new_skip_dirs() :: rebar_dict() }). -export_type([t/0]). @@ -160,6 +162,17 @@ create_logic_providers(ProviderModules, State0) -> State1 end, State0, ProviderModules). +prepend_hook(State=#state_t{hooks=Hooks}, Target, Hook) -> + {PreHooks, PostHooks} = proplists:get_value(Target, Hooks, {[], []}), + State#state_t{hooks=[{Target, {[Hook | PreHooks], PostHooks}} | proplists:delete(Target, Hooks)]}. + +append_hook(State=#state_t{hooks=Hooks}, Target, Hook) -> + {PreHooks, PostHooks} = proplists:get_value(Target, Hooks, {[], []}), + State#state_t{hooks=[{Target, {PreHooks, [Hook | PostHooks]}} | proplists:delete(Target, Hooks)]}. + +hooks(#state_t{hooks=Hooks}, Target) -> + proplists:get_value(Target, Hooks, {[], []}). + %% =================================================================== %% Internal functions %% =================================================================== |