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.erl29
1 files changed, 19 insertions, 10 deletions
diff --git a/src/rebar_hooks.erl b/src/rebar_hooks.erl
index 9518542..ebc4d2d 100644
--- a/src/rebar_hooks.erl
+++ b/src/rebar_hooks.erl
@@ -1,6 +1,9 @@
-module(rebar_hooks).
--export([run_all_hooks/5]).
+-export([run_all_hooks/5
+ ,format_error/1]).
+
+-include_lib("providers/include/providers.hrl").
-spec run_all_hooks(file:filename_all(), pre | post,
atom() | {atom(), atom()} | string(),
@@ -18,13 +21,21 @@ run_provider_hooks(Dir, Type, Command, Providers, State) ->
TypeHooks = proplists:get_value(Type, AllHooks, []),
HookProviders = proplists:get_all_values(Command, TypeHooks),
- State2 = rebar_core:do(HookProviders, State1),
- rebar_utils:remove_from_code_path(PluginDepsPaths),
- State2.
+ case rebar_core:do(HookProviders, State1) of
+ {error, ProviderName} ->
+ throw(?PRV_ERROR({bad_provider, Type, Command, ProviderName}));
+ {ok, _} ->
+ rebar_utils:remove_from_code_path(PluginDepsPaths)
+ end.
+
+format_error({bad_provider, Type, Command, {Name, Namespace}}) ->
+ io_lib:format("Unable to run ~s hooks for '~p', command '~p' in namespace '~p' not found.", [Type, Command, Namespace, Name]);
+format_error({bad_provider, Type, Command, Name}) ->
+ io_lib:format("Unable to run ~s hooks for '~p', command '~p' not found.", [Type, Command, Name]).
%% @doc The following environment variables are exported when running
%% a hook (absolute paths):
-%%
+%%
%% REBAR_DEPS_DIR = rebar_dir:deps_dir/1
%% REBAR_BUILD_DIR = rebar_dir:base_dir/1
%% REBAR_ROOT_DIR = rebar_dir:root_dir/1
@@ -36,7 +47,7 @@ run_provider_hooks(Dir, Type, Command, Providers, State) ->
%% REBAR_APP_DIRS = rebar_dir:lib_dirs/1
%% REBAR_SRC_DIRS = rebar_dir:src_dirs/1
%%
-%% autoconf compatible variables
+%% autoconf compatible variables
%% (see: http://www.gnu.org/software/autoconf/manual/autoconf.html#Erlang-Libraries):
%% ERLANG_ERTS_VER = erlang:system_info(version)
%% ERLANG_ROOT_DIR = code:root_dir/0
@@ -100,8 +111,6 @@ join_dirs(BaseDir, Dirs) ->
re_version(Path) ->
case re:run(Path, "^.*-(?<VER>[^/-]*)$", [{capture, [1], list}]) of
- nomatch -> "";
- {match, [Ver]} -> Ver
+ nomatch -> "";
+ {match, [Ver]} -> Ver
end.
-
-