summaryrefslogtreecommitdiff
path: root/src/rebar_state.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_state.erl')
-rw-r--r--src/rebar_state.erl13
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
%% ===================================================================