summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-02-04 18:03:07 +0000
committerDaniil Fedotov <dfedotov@pivotal.io>2016-02-04 18:03:07 +0000
commit246c21eec2d8acce04ce5bafa283877f46351666 (patch)
tree662f0ae235ab1e304a822b0800f84156b420f4e3 /src
parentd4ec127d7aa0a8d6514599006db550de96fbdf09 (diff)
downloadrabbitmq-server-git-246c21eec2d8acce04ce5bafa283877f46351666.tar.gz
Call config generation from within erlang
Diffstat (limited to 'src')
-rw-r--r--src/rabbit.erl8
-rw-r--r--src/rabbit_config.erl37
2 files changed, 45 insertions, 0 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index d7915e3bce..23f5fa77b3 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -272,6 +272,14 @@ start() ->
boot() ->
start_it(fun() ->
+ % case rabbit_config:prepare_config() of
+ % ok -> ok;
+ % {error, Reason} ->
+ % log_boot_error_and_exit(
+ % generate_config_file,
+ % "~nConfig file generation failed ~p",
+ % [Reason])
+ % end,
ok = ensure_application_loaded(),
HipeResult = rabbit_hipe:maybe_hipe_compile(),
ok = start_logger(),
diff --git a/src/rabbit_config.erl b/src/rabbit_config.erl
new file mode 100644
index 0000000000..cb2e6a144a
--- /dev/null
+++ b/src/rabbit_config.erl
@@ -0,0 +1,37 @@
+-module(rabbit_config).
+
+-export([generate_config_file/1, prepare_config/0]).
+
+prepare_config() ->
+ {ok, Configs} = init:get_argument(config),
+ ConfFiles = [Config++".conf" || [Config] <- Configs,
+ rabbit_file:is_file(Config ++ ".conf")],
+ case ConfFiles of
+ [] -> ok;
+ _ ->
+ case generate_config_file(ConfFiles) of
+ {ok, GeneratedConfigFile} ->
+ ok = application_controller:change_application_data(
+ [], [GeneratedConfigFile]);
+ {error, Reason} ->
+ {error, Reason}
+ end
+ end.
+
+generate_config_file(ConfFiles) ->
+ rabbit_file:recursive_delete("./generated"),
+ ConfArg = [["-c", ConfFile] || ConfFile <- ConfFiles],
+ Command = case os:type() of
+ {unix, _} ->
+ ["./generate-config ", ConfArg];
+ {win32, _} ->
+ [".generate-config.bat ", ConfArg];
+ _ ->
+ {error, os_unsupported}
+ end,
+ Result = os:cmd(Command),
+ case string:str(Result, " -config ") of
+ 0 -> {error, {generaion_error, Result}};
+ _ -> {ok, "./generated/rabbitmq.config"}
+ end.
+ \ No newline at end of file