summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rebar_app_discover.erl12
-rw-r--r--src/rebar_prv_app_discovery.erl15
2 files changed, 20 insertions, 7 deletions
diff --git a/src/rebar_app_discover.erl b/src/rebar_app_discover.erl
index ae4916e..4005612 100644
--- a/src/rebar_app_discover.erl
+++ b/src/rebar_app_discover.erl
@@ -70,7 +70,9 @@ find_app(AppDir, Validate) ->
[F] ->
rebar_app_info:app_file_src(AppInfo1, F);
[] ->
- AppInfo1
+ AppInfo1;
+ Other when is_list(Other) ->
+ throw({error, {multiple_app_files, Other}})
end,
case Validate of
valid ->
@@ -101,8 +103,12 @@ find_app(AppDir, Validate) ->
false
end;
[] ->
- false
- end
+ false;
+ Other when is_list(Other) ->
+ throw({error, {multiple_app_files, Other}})
+ end;
+ Other when is_list(Other) ->
+ throw({error, {multiple_app_files, Other}})
end.
app_dir(AppFile) ->
diff --git a/src/rebar_prv_app_discovery.erl b/src/rebar_prv_app_discovery.erl
index ccc470b..b6cdf80 100644
--- a/src/rebar_prv_app_discovery.erl
+++ b/src/rebar_prv_app_discovery.erl
@@ -33,9 +33,16 @@ init(State) ->
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
LibDirs = rebar_state:get(State, lib_dirs, ?DEFAULT_LIB_DIRS),
- State1 = rebar_app_discover:do(State, LibDirs),
- {ok, State1}.
-
--spec format_error(any()) -> iolist().
+ try
+ State1 = rebar_app_discover:do(State, LibDirs),
+ {ok, State1}
+ catch
+ throw:{error, Error}->
+ {error, {?MODULE, Error}}
+ end.
+
+-spec format_error(any()) -> iolist().
+format_error({multiple_app_files, Files}) ->
+ io_lib:format("Multiple app files found in one app dir: ~s", [string:join(Files, " and ")]);
format_error(Reason) ->
io_lib:format("~p", [Reason]).