diff options
author | Fred Hebert <mononcqc@ferd.ca> | 2015-06-01 15:12:54 -0400 |
---|---|---|
committer | Fred Hebert <mononcqc@ferd.ca> | 2015-06-01 15:12:54 -0400 |
commit | 5c78f96c415de37760839e608794c57f41c1a695 (patch) | |
tree | b50eea9f64891a8e89198efda1f4dbcd0c39527f /src | |
parent | e09be186c10c113040fd984fa27cbda5581eef0f (diff) |
Handle custom logger shell breakage
When swapping handlers, if a custom shell has been installed, it's
possible it'll take over the tty and other options. This may break
common operations that work on an otherwise regular shell, so we ignore
failures and let things work with the custom shell only.
Diffstat (limited to 'src')
-rw-r--r-- | src/rebar_prv_shell.erl | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/src/rebar_prv_shell.erl b/src/rebar_prv_shell.erl index bd49ee1..e407ff2 100644 --- a/src/rebar_prv_shell.erl +++ b/src/rebar_prv_shell.erl @@ -111,12 +111,18 @@ setup_shell() -> %% liveness check. _ = [catch erlang:group_leader(whereis(user), Pid) || Pid <- NeedsUpdate, is_process_alive(Pid)], - %% enable error_logger's tty output - ok = error_logger:swap_handler(tty), - %% disable the simple error_logger (which may have been added multiple - %% times). removes at most the error_logger added by init and the - %% error_logger added by the tty handler - ok = remove_error_handler(3). + try + %% enable error_logger's tty output + error_logger:swap_handler(tty), + %% disable the simple error_logger (which may have been added multiple + %% times). removes at most the error_logger added by init and the + %% error_logger added by the tty handler + remove_error_handler(3) + catch + E:R -> % may fail with custom loggers + ?DEBUG("Logger changes failed for ~p:~p (~p)", [E,R,erlang:get_stacktrace()]), + hope_for_best + end. setup_paths(State) -> %% Add deps to path |