%% -*- 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).