From fa52e19b4990a17eb7efbafc0364c0c686d7b770 Mon Sep 17 00:00:00 2001 From: Eric Date: Mon, 22 Oct 2012 12:42:58 -0500 Subject: fix error reporting when using the erlang API Signed-off-by: Jordan Wilberding --- src/relcool.erl | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/relcool.erl') diff --git a/src/relcool.erl b/src/relcool.erl index 9e143a6..98b84f7 100644 --- a/src/relcool.erl +++ b/src/relcool.erl @@ -43,7 +43,12 @@ main(Args) -> OptSpecList = opt_spec_list(), case rcl_cmd_args:args2state(getopt:parse(OptSpecList, Args)) of {ok, {State, _Target}} -> - run_relcool_process(rcl_state:caller(State, command_line)); + case run_relcool_process(rcl_state:caller(State, command_line)) of + Result = {ok, _} -> + Result; + Error={error, _} -> + report_error(State, Error) + end; Error={error, _} -> report_error(rcl_state:caller(rcl_state:new([], []), command_line), Error) @@ -77,13 +82,16 @@ opt_spec_list() -> "usually the OTP"}, {output_dir, $o, "output-dir", string, "The output directory for the release. This is `./` by default."}, {lib_dir, $l, "lib-dir", string, "Additional dirs that should be searched for OTP Apps"}, - {log_level, $V, "verbose", {integer, 1}, "Verbosity level, maybe between 0 and 2"} + {log_level, $V, "verbose", {integer, 2}, "Verbosity level, maybe between 0 and 2"} ]. -spec format_error(Reason::term()) -> iolist(). format_error({invalid_return_value, Provider, Value}) -> [rcl_provider:format(Provider), " returned an invalid value ", - io_lib:format("~p", [Value])]. + io_lib:format("~p", [Value])]; +format_error({error, {Module, Reason}}) -> + io_lib:format("~s", [Module:format_error(Reason)]). + %%============================================================================ %% internal api @@ -136,14 +144,13 @@ run_provider(Provider, {ok, State0}) -> {ok, State1} -> {ok, State1}; E={error, _} -> - report_error(State0, E) + E end. -spec usage() -> ok. usage() -> getopt:usage(opt_spec_list(), "relcool", "[*release-specification-file*]"). - -spec report_error(rcl_state:t(), error()) -> none() | error(). report_error(State, Error={error, {Module, Reason}}) -> io:format("~s~n", [Module:format_error(Reason)]), -- cgit v1.2.3