summaryrefslogtreecommitdiff
path: root/src/rebar_hooks.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_hooks.erl')
-rw-r--r--src/rebar_hooks.erl42
1 files changed, 23 insertions, 19 deletions
diff --git a/src/rebar_hooks.erl b/src/rebar_hooks.erl
index 857336c..6db3c77 100644
--- a/src/rebar_hooks.erl
+++ b/src/rebar_hooks.erl
@@ -1,6 +1,7 @@
-module(rebar_hooks).
-export([run_all_hooks/5
+ ,run_all_hooks/6
,format_error/1]).
-include("rebar.hrl").
@@ -8,29 +9,32 @@
-spec run_all_hooks(file:filename_all(), pre | post,
atom() | {atom(), atom()} | string(),
- [providers:t()], rebar_state:t()) -> ok.
+ [providers:t()], rebar_app_info:t(), rebar_state:t()) -> ok.
+run_all_hooks(Dir, Type, Command, Providers, AppInfo, State) ->
+ run_provider_hooks(Dir, Type, Command, Providers, rebar_app_info:opts(AppInfo), State),
+ run_hooks(Dir, Type, Command, rebar_app_info:opts(AppInfo), State).
+
run_all_hooks(Dir, Type, Command, Providers, State) ->
- run_provider_hooks(Dir, Type, Command, Providers, State),
- run_hooks(Dir, Type, Command, State).
+ run_provider_hooks(Dir, Type, Command, Providers, rebar_state:opts(State), State),
+ run_hooks(Dir, Type, Command, rebar_state:opts(State), State).
-run_provider_hooks(Dir, Type, Command, Providers, State) ->
- case rebar_state:get(State, provider_hooks, []) of
+run_provider_hooks(Dir, Type, Command, Providers, Opts, State) ->
+ case rebar_opts:get(Opts, provider_hooks, []) of
[] ->
ok;
AllHooks ->
TypeHooks = proplists:get_value(Type, AllHooks, []),
- run_provider_hooks(Dir, Type, Command, Providers, TypeHooks, State)
+ run_provider_hooks_(Dir, Type, Command, Providers, TypeHooks, rebar_state:opts(State, Opts))
end.
-run_provider_hooks(_Dir, _Type, _Command, _Providers, [], _State) ->
+run_provider_hooks_(_Dir, _Type, _Command, _Providers, [], _State) ->
ok;
-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}), []),
@@ -67,16 +71,16 @@ 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) ->
- case rebar_state:get(State, Type, []) of
+run_hooks(Dir, pre, Command, Opts, State) ->
+ run_hooks(Dir, pre_hooks, Command, Opts, State);
+run_hooks(Dir, post, Command, Opts, State) ->
+ run_hooks(Dir, post_hooks, Command, Opts, State);
+run_hooks(Dir, Type, Command, Opts, State) ->
+ case rebar_opts:get(Opts, Type, []) of
[] ->
ok;
Hooks ->
- Env = create_env(State),
+ Env = create_env(State, Opts),
lists:foreach(fun({_, C, _}=Hook) when C =:= Command ->
apply_hook(Dir, Env, Hook);
({C, _}=Hook) when C =:= Command ->
@@ -97,8 +101,8 @@ apply_hook(Dir, Env, {Command, Hook}) ->
Msg = lists:flatten(io_lib:format("Hook for ~p failed!~n", [Command])),
rebar_utils:sh(Hook, [use_stdout, {cd, Dir}, {env, Env}, {abort_on_error, Msg}]).
-create_env(State) ->
- BaseDir = rebar_state:dir(State),
+create_env(State, Opts) ->
+ BaseDir = rebar_dir:base_dir(State),
[
{"REBAR_DEPS_DIR", filename:absname(rebar_dir:deps_dir(State))},
{"REBAR_BUILD_DIR", filename:absname(rebar_dir:base_dir(State))},
@@ -109,7 +113,7 @@ create_env(State) ->
{"REBAR_GLOBAL_CACHE_DIR", filename:absname(rebar_dir:global_cache_dir(State))},
{"REBAR_TEMPLATE_DIR", filename:absname(rebar_dir:template_dir(State))},
{"REBAR_APP_DIRS", join_dirs(BaseDir, rebar_dir:lib_dirs(State))},
- {"REBAR_SRC_DIRS", join_dirs(BaseDir, rebar_dir:all_src_dirs(State))},
+ {"REBAR_SRC_DIRS", join_dirs(BaseDir, rebar_dir:all_src_dirs(Opts))},
{"ERLANG_ERTS_VER", erlang:system_info(version)},
{"ERLANG_ROOT_DIR", code:root_dir()},
{"ERLANG_LIB_DIR_erl_interface", code:lib_dir(erl_interface)},