diff options
author | Eric <[email protected]> | 2012-09-18 15:51:47 -0700 |
---|---|---|
committer | Eric <[email protected]> | 2012-09-18 15:51:47 -0700 |
commit | 49a45620c2c0431583969192fbefe44ee6f7850c (patch) | |
tree | 5f7624b3473797637f711bc0f345b7290b4a92b4 /src/rcl_prv_discover.erl | |
parent | 79a28e0e498c4727dde2546ff83da6cb81e907e6 (diff) | |
download | relx-49a45620c2c0431583969192fbefe44ee6f7850c.tar.gz relx-49a45620c2c0431583969192fbefe44ee6f7850c.tar.bz2 relx-49a45620c2c0431583969192fbefe44ee6f7850c.zip |
make sure errors carry the name of the module that created them
This allows errors to be printed at the source
Diffstat (limited to 'src/rcl_prv_discover.erl')
-rw-r--r-- | src/rcl_prv_discover.erl | 18 |
1 files changed, 10 insertions, 8 deletions
diff --git a/src/rcl_prv_discover.erl b/src/rcl_prv_discover.erl index 4ac21a6..dcee041 100644 --- a/src/rcl_prv_discover.erl +++ b/src/rcl_prv_discover.erl @@ -29,6 +29,8 @@ do/1, format_error/1]). +-include_lib("relcool/include/relcool.hrl"). + %%============================================================================ %% API %%============================================================================ @@ -38,7 +40,7 @@ init(State) -> %% @doc recursively dig down into the library directories specified in the state %% looking for OTP Applications --spec do(rcl_state:t()) -> {error, Reason::term()} | {ok, rcl_state:t()}. +-spec do(rcl_state:t()) -> {ok, rcl_state:t()} | relcool:error(). do(State) -> LibDirs = get_lib_dirs(State), rcl_log:info(rcl_state:log(State), @@ -73,11 +75,12 @@ do(State) -> end), {ok, rcl_state:available_apps(State, AppMeta1)}; _ -> - {error, Errors} + ?RCL_ERROR(Errors) end. --spec format_error({error, [ErrorDetail::term()]}) -> iolist(). -format_error({error, ErrorDetails}) -> +-spec format_error([ErrorDetail::term()]) -> iolist(). +format_error(ErrorDetails) + when erlang:is_list(ErrorDetails) -> [[format_detail(ErrorDetail), "\n"] || ErrorDetail <- ErrorDetails]. %%%=================================================================== @@ -126,9 +129,9 @@ add_system_lib_dir(State, LibDirs) -> end. -spec format_detail(ErrorDetail::term()) -> iolist(). -format_detail({accessing, File, eaccess}) -> +format_detail({error, {accessing, File, eaccess}}) -> io_lib:format("permission denied accessing file ~s", [File]); -format_detail({accessing, File, Type}) -> +format_detail({error, {accessing, File, Type}}) -> io_lib:format("error (~p) accessing file ~s", [Type, File]); format_detail({error, {no_beam_files, EbinDir}}) -> io_lib:format("no beam files found in directory ~s", [EbinDir]); @@ -143,8 +146,7 @@ format_detail({error, {unversioned_app, AppDir, _AppName}}) -> io_lib:format("Application metadata exists but version is not available: ~s", [AppDir]); format_detail({error, {app_info_error, Detail}}) -> - rcl_app_info:format_error({error, Detail}). - + rcl_app_info:format_error(Detail). -spec discover_dir(file:name()) -> [rcl_app_info:t() | {error, Reason::term()}] | |