From 55558ccfbdefe22009a848c703d341f613863c2e Mon Sep 17 00:00:00 2001 From: "Zaiming (Stone) Shi" Date: Sun, 26 Jun 2022 14:16:08 +0200 Subject: [PATCH] chore: allow lazy type environment variable override --- apps/emqx/src/emqx_config.erl | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/apps/emqx/src/emqx_config.erl b/apps/emqx/src/emqx_config.erl index ab98ded69..236b8b1a9 100644 --- a/apps/emqx/src/emqx_config.erl +++ b/apps/emqx/src/emqx_config.erl @@ -144,7 +144,7 @@ get_root([RootName | _]) -> %% @doc For the given path, get raw root value enclosed in a single-key map. %% key is ensured to be binary. get_root_raw([RootName | _]) -> - #{bin(RootName) => do_get(?RAW_CONF, [RootName], #{})}. + #{bin(RootName) => do_get_raw([RootName], #{})}. %% @doc Get a config value for the given path. %% The path should at least include root config name. @@ -173,7 +173,7 @@ find(KeyPath) -> {ok, term()} | {not_found, emqx_map_lib:config_key_path(), term()}. find_raw([]) -> Ref = make_ref(), - case do_get(?RAW_CONF, [], Ref) of + case do_get_raw([], Ref) of Ref -> {not_found, []}; Res -> {ok, Res} end; @@ -281,10 +281,10 @@ get_default_value([RootName | _] = KeyPath) -> end. -spec get_raw(emqx_map_lib:config_key_path()) -> term(). -get_raw(KeyPath) -> hocon_tconf:remove_env_meta(do_get(?RAW_CONF, KeyPath)). +get_raw(KeyPath) -> do_get_raw(KeyPath). -spec get_raw(emqx_map_lib:config_key_path(), term()) -> term(). -get_raw(KeyPath, Default) -> hocon_tconf:remove_env_meta(do_get(?RAW_CONF, KeyPath, Default)). +get_raw(KeyPath, Default) -> do_get_raw(KeyPath, Default). -spec put_raw(map()) -> ok. put_raw(Config) -> @@ -398,11 +398,11 @@ include_dirs() -> [filename:join(emqx:data_dir(), "configs")]. merge_envs(SchemaMod, RawConf) -> - %% TODO: evil, remove, required should be declared in schema Opts = #{ required => false, format => map, - apply_override_envs => true + apply_override_envs => true, + check_lazy => true }, hocon_tconf:merge_env_overrides(SchemaMod, RawConf, all, Opts). @@ -571,6 +571,12 @@ load_hocon_file(FileName, LoadType) -> #{} end. +do_get_raw(Path) -> + hocon_tconf:remove_env_meta(do_get(?RAW_CONF, Path)). + +do_get_raw(Path, Default) -> + hocon_tconf:remove_env_meta(do_get(?RAW_CONF, Path, Default)). + do_get(Type, KeyPath) -> Ref = make_ref(), Res = do_get(Type, KeyPath, Ref),