summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTristan Sloughter <t@crashfast.com>2019-06-26 10:23:48 -0600
committerGitHub <noreply@github.com>2019-06-26 10:23:48 -0600
commitd752e2787007991d59de143087bf9bafe47e0402 (patch)
tree02ad1a9e0fe2948d9f60525336d3656b8e77044e
parentf23e5a423347c0b04d8513410132a875f3767340 (diff)
parent86bc08d164dfd84a1633597044fa64de81e18383 (diff)
Merge pull request #2110 from saleyn/master
Make missing file report more comprehensive
-rw-r--r--src/rebar_compiler_erl.erl23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/rebar_compiler_erl.erl b/src/rebar_compiler_erl.erl
index 1ad16d8..a39e906 100644
--- a/src/rebar_compiler_erl.erl
+++ b/src/rebar_compiler_erl.erl
@@ -6,9 +6,11 @@
needed_files/4,
dependencies/3,
compile/4,
- clean/2]).
+ clean/2,
+ format_error/1]).
-include("rebar.hrl").
+-include_lib("providers/include/providers.hrl").
context(AppInfo) ->
EbinDir = rebar_app_info:ebin_dir(AppInfo),
@@ -74,11 +76,15 @@ needed_files(Graph, FoundFiles, _, AppInfo) ->
{OtherErls, ErlOpts ++ AdditionalOpts}}.
dependencies(Source, SourceDir, Dirs) ->
- {ok, Fd} = file:open(Source, [read]),
- Incls = parse_attrs(Fd, [], SourceDir),
- AbsIncls = expand_file_names(Incls, Dirs),
- ok = file:close(Fd),
- AbsIncls.
+ case file:open(Source, [read]) of
+ {ok, Fd} ->
+ Incls = parse_attrs(Fd, [], SourceDir),
+ AbsIncls = expand_file_names(Incls, Dirs),
+ ok = file:close(Fd),
+ AbsIncls;
+ {error, Reason} ->
+ throw(?PRV_ERROR({cannot_read_file, Source, file:format_error(Reason)}))
+ end.
compile(Source, [{_, OutDir}], Config, ErlOpts) ->
case compile:file(Source, [{outdir, OutDir} | ErlOpts]) of
@@ -363,3 +369,8 @@ warn_and_find_path(File, Dir) ->
[]
end
end.
+
+format_error({cannot_read_file, Source, Reason}) ->
+ lists:flatten(io_lib:format("Cannot read file '~s': ~s", [Source, Reason]));
+format_error(Other) ->
+ io_lib:format("~p", [Other]).