From da122b3e57e13c9935d115ad5b9f62c68121c08a Mon Sep 17 00:00:00 2001 From: Tuncer Ayaz Date: Fri, 13 Jan 2012 20:03:13 +0100 Subject: Add rebar_utils:delayed_halt/1 --- src/rebar.erl | 4 +--- src/rebar_utils.erl | 17 +++++++++++++++-- 2 files changed, 16 insertions(+), 5 deletions(-) (limited to 'src') 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 %% ==================================================================== -- cgit v1.1