diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit.erl | 8 | ||||
| -rw-r--r-- | src/rabbit_config.erl | 37 |
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 |
