Просмотр исходного кода

chore: allow lazy type environment variable override

Zaiming (Stone) Shi 3 лет назад
Родитель
Сommit
55558ccfbd
1 измененных файлов с 12 добавлено и 6 удалено
  1. 12 6
      apps/emqx/src/emqx_config.erl

+ 12 - 6
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.
 %% @doc For the given path, get raw root value enclosed in a single-key map.
 %% key is ensured to be binary.
 %% key is ensured to be binary.
 get_root_raw([RootName | _]) ->
 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.
 %% @doc Get a config value for the given path.
 %% The path should at least include root config name.
 %% 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()}.
     {ok, term()} | {not_found, emqx_map_lib:config_key_path(), term()}.
 find_raw([]) ->
 find_raw([]) ->
     Ref = make_ref(),
     Ref = make_ref(),
-    case do_get(?RAW_CONF, [], Ref) of
+    case do_get_raw([], Ref) of
         Ref -> {not_found, []};
         Ref -> {not_found, []};
         Res -> {ok, Res}
         Res -> {ok, Res}
     end;
     end;
@@ -281,10 +281,10 @@ get_default_value([RootName | _] = KeyPath) ->
     end.
     end.
 
 
 -spec get_raw(emqx_map_lib:config_key_path()) -> term().
 -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().
 -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.
 -spec put_raw(map()) -> ok.
 put_raw(Config) ->
 put_raw(Config) ->
@@ -398,11 +398,11 @@ include_dirs() ->
     [filename:join(emqx:data_dir(), "configs")].
     [filename:join(emqx:data_dir(), "configs")].
 
 
 merge_envs(SchemaMod, RawConf) ->
 merge_envs(SchemaMod, RawConf) ->
-    %% TODO: evil, remove, required should be declared in schema
     Opts = #{
     Opts = #{
         required => false,
         required => false,
         format => map,
         format => map,
-        apply_override_envs => true
+        apply_override_envs => true,
+        check_lazy => true
     },
     },
     hocon_tconf:merge_env_overrides(SchemaMod, RawConf, all, Opts).
     hocon_tconf:merge_env_overrides(SchemaMod, RawConf, all, Opts).
 
 
@@ -571,6 +571,12 @@ load_hocon_file(FileName, LoadType) ->
             #{}
             #{}
     end.
     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) ->
 do_get(Type, KeyPath) ->
     Ref = make_ref(),
     Ref = make_ref(),
     Res = do_get(Type, KeyPath, Ref),
     Res = do_get(Type, KeyPath, Ref),