diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar.erl | 4 | ||||
-rw-r--r-- | src/rebar_utils.erl | 17 |
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 %% ==================================================================== |