summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xgenerate-config3
-rw-r--r--generate-config.bat2
-rw-r--r--src/rabbit.erl8
-rw-r--r--src/rabbit_config.erl37
4 files changed, 50 insertions, 0 deletions
diff --git a/generate-config b/generate-config
new file mode 100755
index 0000000000..def36b1a13
--- /dev/null
+++ b/generate-config
@@ -0,0 +1,3 @@
+rm -rf ./generated/rabbitmq.config &&
+./cuttlefish -e . -s ./schema -f rabbitmq $* &&
+mv ./generated/rabbitmq.*.config ./generated/rabbitmq.config \ No newline at end of file
diff --git a/generate-config.bat b/generate-config.bat
new file mode 100644
index 0000000000..8032dac32b
--- /dev/null
+++ b/generate-config.bat
@@ -0,0 +1,2 @@
+@echo off
+del ".\generated\rabbitmq.config" && del ".\generated\rabbitmq.*.config" && "%ERLANG_HOME%\bin\escript.exe" .\cuttlefish -e "." -i .\rabbitmq.schema %* -f rabbitmq && ren ".\generated\rabbitmq.*.config" "rabbitmq.config"
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