gmhive_client/src/gmhc_app.erl

76 lines
2.0 KiB
Erlang

%% -*- mode: erlang; erlang-indent-level: 4; indent-tabs-mode: nil -*-
-module(gmhc_app).
-vsn("0.6.1").
-behaviour(application).
-export([ start/1 ]).
-export([ start/2
, start_phase/3
, prep_stop/1
, stop/1
]).
-include_lib("kernel/include/logger.hrl").
-spec start([{atom(), any()}]) -> {ok, [atom()]} | {error, any()}.
start(Opts) ->
application:load(gmhive_client),
{error,_} = application:stop(gmhive_client),
_ = lists:foreach(fun({K, V}) ->
application:set_env(gmhive_client, K, V)
end, Opts),
application:ensure_all_started(gmhive_client).
start(_StartType, _StartArgs) ->
set_things_up(),
gmhc_sup:start_link().
start_phase(connect_to_primary, _StartType, []) ->
case application:get_env(gmhive_client, auto_connect, true) of
true ->
gmhc_connectors_sup:start_first_connector();
false ->
skip
end,
ok;
start_phase(_Phase, _StartType, _PhaseArgs) ->
ok.
prep_stop(_State) ->
ok.
stop(_State) ->
ok.
set_things_up() ->
maybe_add_logger_handler(),
gmhc_counters:initialize(),
gmhc_config:load_config(),
logger:set_module_level([gmhw_pow_cuckoo], notice),
?LOG_DEBUG("Config: ~p", [gmconfig:user_config()]),
case gmhc_config:get_config([<<"report">>]) of
<<"debug">> ->
?LOG_NOTICE("Starting debug reporter", []),
gmhc_events:debug();
<<"progress">> ->
?LOG_NOTICE("Starting progress reporter", []),
gmhc_events:progress();
_ -> ok
end,
ok.
maybe_add_logger_handler() ->
case is_headless() orelse application:get_env(gmhive_client, tty_logger, false) of
true ->
Level = application:get_env(gmhive_client, tty_logger_level, error),
io:fwrite("Adding logger handler: ~p~n", [Level]),
logger:add_handler(gmhc_tty, logger_std_h, #{level => Level});
false ->
ok
end.
is_headless() ->
undefined == application:get_key(gajumine, vsn).