summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rebar.erl4
-rw-r--r--src/rebar_utils.erl17
2 files changed, 16 insertions, 5 deletions
diff --git a/src/rebar.erl b/src/rebar.erl
index b7d977f..1f72a4c 100644
--- a/src/rebar.erl
+++ b/src/rebar.erl
@@ -238,9 +238,7 @@ show_info_maybe_halt(O, Opts, F) ->
case proplists:get_bool(O, Opts) of
true ->
F(),
- halt(0),
- %% workaround to delay exit until all output is written
- receive after infinity -> ok end;
+ rebar_utils:delayed_halt(0);
false ->
false
end.
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index 199acdf..eafcf0e 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -45,7 +45,8 @@
deprecated/3, deprecated/4,
expand_env_variable/3,
vcs_vsn/2,
- get_deprecated_global/3]).
+ get_deprecated_global/3,
+ delayed_halt/1]).
-include("rebar.hrl").
@@ -137,7 +138,7 @@ ensure_dir(Path) ->
-spec abort(string(), [term()]) -> no_return().
abort(String, Args) ->
?ERROR(String, Args),
- halt(1).
+ delayed_halt(1).
%% TODO: Rename emulate_escript_foldl to escript_foldl and remove
%% this function when the time is right. escript:foldl/3 was an
@@ -270,6 +271,18 @@ deprecated(Old, New, When) ->
"'~p' will be removed ~s.~n~n">>,
[Old, Old, New, Old, When]).
+-spec delayed_halt(integer()) -> no_return().
+delayed_halt(Code) ->
+ case os:type() of
+ {win32, nt} ->
+ timer:sleep(100),
+ halt(Code);
+ _ ->
+ halt(Code),
+ %% workaround to delay exit until all output is written
+ receive after infinity -> ok end
+ end.
+
%% ====================================================================
%% Internal functions
%% ====================================================================