Adding fail_on_warning support

This commit is contained in:
Dave Smith 2009-12-14 09:27:47 -05:00
parent d6600ab506
commit 417ff3ad76

View file

@ -111,11 +111,19 @@ compile_opts(Config, Key) ->
rebar_config:get_list(Config, Key, []).
compile_erl(Source, Config) ->
Opts = [{i, "include"}, {outdir, "ebin"}, report] ++ compile_opts(Config, erl_opts),
Opts = [{i, "include"}, {outdir, "ebin"}, report, return] ++ compile_opts(Config, erl_opts),
case compile:file(Source, Opts) of
{ok, _} ->
{ok, _, []} ->
ok;
error ->
{ok, _, _Warnings} ->
%% We got at least one warning -- if fail_on_warning is in options, fail
case lists:member(fail_on_warning, Opts) of
true ->
?FAIL;
false ->
ok
end;
_ ->
?FAIL
end.
@ -142,6 +150,10 @@ compile_queue(Pids, Targets, Config, CompileFn) ->
compile_queue(Pids, Rest, Config, CompileFn)
end;
{fail, Error} ->
?DEBUG("Worker compilation failed: ~p\n", [Error]),
?FAIL;
{compiled, Source} ->
?CONSOLE("Compiled ~s\n", [Source]),
compile_queue(Pids, Targets, Config, CompileFn);
@ -162,13 +174,19 @@ compile_worker(QueuePid) ->
{compile, Src, Target, Config, CompileFn} ->
case needs_compile(Src, Target) of
true ->
CompileFn(Src, Config),
QueuePid ! {compiled, Src};
case catch(CompileFn(Src, Config)) of
ok ->
QueuePid ! {compiled, Src},
compile_worker(QueuePid);
Error ->
QueuePid ! {fail, Error},
ok
end;
false ->
?INFO("Skipping ~s\n", [Src]),
ok
end,
compile_worker(QueuePid);
compile_worker(QueuePid)
end;
empty ->
ok
end.