-module(z_syslog_app). -behaviour(application). -export([ start/0, start/2, stop/1 ]). %%==================================================================== %% API %%==================================================================== start() -> ensure_started(zotonic_mod_syslog). start(_StartType, _StartArgs) -> z_syslog_sup:start_link(). %%-------------------------------------------------------------------- stop(_State) -> ok. -spec ensure_started(atom()) -> ok | {error, term()}. ensure_started(App) -> case application:start(App) of ok -> ok; {error, {not_started, Dep}} -> case ensure_started(Dep) of ok -> ensure_started(App); {error, _} = Error -> Error end; {error, {already_started, App}} -> ok; {error, {Tag, Msg}} when is_list(Tag), is_list(Msg) -> {error, lists:flatten(io_lib:format("~s: ~s", [Tag, Msg]))}; {error, {bad_return, {{M, F, Args}, Return}}} -> A = string:join([io_lib:format("~p", [A])|| A <- Args], ", "), {error, lists:flatten( io_lib:format("~s failed to start due to a bad return value from call ~s:~s(~s):~n~p", [App, M, F, A, Return]))}; {error, Reason} -> {error, Reason} end.