summaryrefslogtreecommitdiff
path: root/src/rebar_app_discover.erl
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2015-01-24 13:15:29 -0600
committerTristan Sloughter <t@crashfast.com>2015-01-24 13:15:39 -0600
commit07ec6b68c67b9ebc19c9432a4f5a2cc9aa2512a5 (patch)
tree5e7dd0f16550384a3ff49703270e2ebb8b990eb0 /src/rebar_app_discover.erl
parentd5552cfcd3b4cba40eb6ea6b6cfed66352b8061b (diff)
clean up and better error messages when validating apps
Diffstat (limited to 'src/rebar_app_discover.erl')
-rw-r--r--src/rebar_app_discover.erl14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/rebar_app_discover.erl b/src/rebar_app_discover.erl
index aad8985..8add9e7 100644
--- a/src/rebar_app_discover.erl
+++ b/src/rebar_app_discover.erl
@@ -1,12 +1,15 @@
-module(rebar_app_discover).
-export([do/2,
+ format_error/1,
find_unbuilt_apps/1,
find_apps/1,
find_apps/2,
find_app/2,
validate_application_info/1]).
+-include_lib("providers/include/providers.hrl").
+
do(State, LibDirs) ->
BaseDir = rebar_state:dir(State),
Dirs = [filename:join(BaseDir, LibDir) || LibDir <- LibDirs],
@@ -17,6 +20,11 @@ do(State, LibDirs) ->
rebar_state:project_apps(StateAcc, rebar_app_info:deps(AppInfo, ProjectDeps1))
end, State, Apps).
+format_error({module_list, File}) ->
+ io_lib:format("Error reading module list from ~p~n", [File]);
+format_error({missing_module, Module}) ->
+ io_lib:format("Module defined in app file missing: ~p~n", [Module]).
+
-spec all_app_dirs(list(file:name())) -> list(file:name()).
all_app_dirs(LibDirs) ->
lists:flatmap(fun(LibDir) ->
@@ -142,7 +150,7 @@ validate_application_info(AppInfo) ->
{ok, List} ->
has_all_beams(EbinDir, List);
_Error ->
- false
+ ?PRV_ERROR({modules_list, AppFile})
end
end.
@@ -158,7 +166,7 @@ get_modules_list(AppFile, AppDetail) ->
{ok, ModulesList}
end.
--spec has_all_beams(file:filename_all(), list()) -> boolean().
+-spec has_all_beams(file:filename_all(), list()) -> true | providers:error().
has_all_beams(EbinDir, [Module | ModuleList]) ->
BeamFile = filename:join([EbinDir,
ec_cnv:to_list(Module) ++ ".beam"]),
@@ -166,7 +174,7 @@ has_all_beams(EbinDir, [Module | ModuleList]) ->
true ->
has_all_beams(EbinDir, ModuleList);
false ->
- false
+ ?PRV_ERROR({missing_module, Module})
end;
has_all_beams(_, []) ->
true.