76 lines
2.0 KiB
Erlang
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).
|