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, []). rebar_config:get_list(Config, Key, []).
compile_erl(Source, Config) -> 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 case compile:file(Source, Opts) of
{ok, _} -> {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 ?FAIL
end. end.
@ -142,6 +150,10 @@ compile_queue(Pids, Targets, Config, CompileFn) ->
compile_queue(Pids, Rest, Config, CompileFn) compile_queue(Pids, Rest, Config, CompileFn)
end; end;
{fail, Error} ->
?DEBUG("Worker compilation failed: ~p\n", [Error]),
?FAIL;
{compiled, Source} -> {compiled, Source} ->
?CONSOLE("Compiled ~s\n", [Source]), ?CONSOLE("Compiled ~s\n", [Source]),
compile_queue(Pids, Targets, Config, CompileFn); compile_queue(Pids, Targets, Config, CompileFn);
@ -162,13 +174,19 @@ compile_worker(QueuePid) ->
{compile, Src, Target, Config, CompileFn} -> {compile, Src, Target, Config, CompileFn} ->
case needs_compile(Src, Target) of case needs_compile(Src, Target) of
true -> true ->
CompileFn(Src, Config), case catch(CompileFn(Src, Config)) of
QueuePid ! {compiled, Src}; ok ->
QueuePid ! {compiled, Src},
compile_worker(QueuePid);
Error ->
QueuePid ! {fail, Error},
ok
end;
false -> false ->
?INFO("Skipping ~s\n", [Src]), ?INFO("Skipping ~s\n", [Src]),
ok compile_worker(QueuePid)
end, end;
compile_worker(QueuePid);
empty -> empty ->
ok ok
end. end.