]> granicus.if.org Git - ejabberd/commitdiff
Improve external module configuration management (EJAB-1746)
authorChristophe Romain <christophe.romain@process-one.net>
Tue, 22 Sep 2015 10:49:55 +0000 (12:49 +0200)
committerChristophe Romain <christophe.romain@process-one.net>
Tue, 22 Sep 2015 10:49:55 +0000 (12:49 +0200)
src/ejabberd_config.erl
src/ext_mod.erl

index 253e7ab11a3b28432846530928497ab95e32d321..c33555913519687079677d3365ba1d1616c2daba 100644 (file)
@@ -201,9 +201,12 @@ get_plain_terms_file(File1, Opts) ->
             BinTerms1 = strings_to_binary(Terms),
             ModInc = case proplists:get_bool(include_modules_configs, Opts) of
                          true ->
-                             filelib:wildcard(ext_mod:modules_dir() ++ "/*/conf/*.{yml,yaml}");
+                            Files = [{filename:rootname(filename:basename(F)), F}
+                                     || F <- filelib:wildcard(ext_mod:config_dir() ++ "/*.{yml,yaml}")
+                                          ++ filelib:wildcard(ext_mod:modules_dir() ++ "/*/conf/*.{yml,yaml}")],
+                            [proplists:get_value(F,Files) || F <- proplists:get_keys(Files)];
                          _ ->
-                             []
+                            []
                      end,
             BinTerms = BinTerms1 ++ [{include_config_file, list_to_binary(V)} || V <- ModInc],
             BinTerms2 = case proplists:get_bool(replace_macros, Opts) of
index 4b9ddafab15718fc8510925582c20d62380b737d..765d38b4f6b56c66c368a09a0ec5dbb7e02a1de3 100644 (file)
@@ -33,7 +33,7 @@
         installed_command/0, installed/0, installed/1,
         install/1, uninstall/1, upgrade/0, upgrade/1,
         add_sources/2, del_sources/1, modules_dir/0,
-        opt_type/1]).
+        config_dir/0, opt_type/1]).
 
 -include("ejabberd_commands.hrl").
 
@@ -350,6 +350,10 @@ modules_dir() ->
 sources_dir() ->
     filename:join(modules_dir(), "sources").
 
+config_dir() ->
+    DefaultDir = filename:join(modules_dir(), "conf"),
+    getenv("CONTRIB_MODULES_CONF_DIR", DefaultDir).
+
 module_lib_dir(Package) ->
     filename:join(modules_dir(), Package).