diff options
-rw-r--r-- | src/rebar3.erl | 10 | ||||
-rw-r--r-- | src/rebar_fetch.erl | 12 | ||||
-rw-r--r-- | src/rebar_utils.erl | 22 |
3 files changed, 14 insertions, 30 deletions
diff --git a/src/rebar3.erl b/src/rebar3.erl index 24d9ad3..9d419d1 100644 --- a/src/rebar3.erl +++ b/src/rebar3.erl @@ -47,9 +47,9 @@ main(Args) -> {ok, _State} -> ok; rebar_abort -> - rebar_utils:delayed_halt(1); + erlang:halt(1); {error, rebar_abort} -> - rebar_utils:delayed_halt(1); + erlang:halt(1); {error, {Module, Reason}} -> case code:which(Module) of non_existing -> @@ -58,16 +58,16 @@ main(Args) -> _ -> ?ERROR(Module:format_error(Reason), []) end, - rebar_utils:delayed_halt(1); + erlang:halt(1); {error, Error} when is_list(Error) -> ?ERROR(Error, []), - rebar_utils:delayed_halt(1); + erlang:halt(1); Error -> %% Nothing should percolate up from rebar_core; %% Dump this error to console ?ERROR("Uncaught error in rebar_core. Run with DEBUG=1 to see stacktrace", []), ?DEBUG("Uncaught error: ~p", [Error]), - rebar_utils:delayed_halt(1) + erlang:halt(1) end. %% Erlang-API entry point diff --git a/src/rebar_fetch.erl b/src/rebar_fetch.erl index 2df892c..eac2d02 100644 --- a/src/rebar_fetch.erl +++ b/src/rebar_fetch.erl @@ -11,6 +11,8 @@ download_source/2, needs_update/2]). +-export([format_error/1]). + -include("rebar.hrl"). %% map short versions of resources to module names @@ -28,14 +30,15 @@ download_source(AppDir, Source) -> Module = get_resource_type(Source), TmpDir = ec_file:insecure_mkdtemp(), AppDir1 = ec_cnv:to_list(AppDir), - ec_file:mkdir_p(AppDir1), case Module:download(TmpDir, Source) of {ok, _} -> + ec_file:mkdir_p(AppDir1), code:del_path(filename:absname(filename:join(AppDir1, "ebin"))), ec_file:remove(filename:absname(AppDir1), [recursive]), ok = ec_file:copy(TmpDir, filename:absname(AppDir1), [recursive]), true; {tarball, File} -> + ec_file:mkdir_p(AppDir1), ok = erl_tar:extract(File, [{cwd, TmpDir} ,compressed]), BaseName = filename:basename(AppDir1), @@ -46,8 +49,8 @@ download_source(AppDir, Source) -> true end catch - _:E -> - {error, E} + _:_ -> + {error, {rebar_fetch, {fetch_fail, Source}}} end. -spec needs_update(file:filename_all(), rebar_resource:resource()) -> boolean() | {error, string()}. @@ -60,6 +63,9 @@ needs_update(AppDir, Source) -> true end. +format_error({fetch_fail, Source}) -> + io_lib:format("Failed to fetch and copy dep: ~p", [Source]). + get_resource_type({Type, Location}) -> find_resource_module(Type, Location); get_resource_type({Type, Location, _}) -> diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl index 21629a4..d899dc5 100644 --- a/src/rebar_utils.erl +++ b/src/rebar_utils.erl @@ -45,7 +45,6 @@ vcs_vsn/3, deprecated/3, deprecated/4, - delayed_halt/1, erl_opts/1, indent/1, cleanup_code_path/1]). @@ -205,27 +204,6 @@ deprecated(Old, New, When) -> "'~p' will be removed ~s.~n">>, [Old, Old, New, Old, When]). --spec delayed_halt(integer()) -> no_return(). -delayed_halt(Code) -> - %% Work around buffer flushing issue in erlang:halt if OTP older - %% than R15B01. - %% TODO: remove workaround once we require R15B01 or newer - %% R15B01 introduced erlang:halt/2 - case erlang:is_builtin(erlang, halt, 2) of - true -> - halt(Code); - false -> - 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 - end. - %% @doc Return list of erl_opts -spec erl_opts(rebar_state:t()) -> list(). erl_opts(Config) -> |