diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-22 16:18:32 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-22 16:18:32 +0100 |
commit | a5cc5ff81ca47874418e2995029a3933c84e4ce2 (patch) | |
tree | b7339a41158ac3973272ecb0399472d3ab23e725 /src/rabbit_prelaunch.erl | |
parent | 9a1141dd17fafb6ea5071968dbb4509ab1150e0f (diff) | |
download | rabbitmq-server-a5cc5ff81ca47874418e2995029a3933c84e4ce2.tar.gz |
don't use the plugins directory
Diffstat (limited to 'src/rabbit_prelaunch.erl')
-rw-r--r-- | src/rabbit_prelaunch.erl | 20 |
1 files changed, 14 insertions, 6 deletions
diff --git a/src/rabbit_prelaunch.erl b/src/rabbit_prelaunch.erl index cd0c322b..c67404f3 100644 --- a/src/rabbit_prelaunch.erl +++ b/src/rabbit_prelaunch.erl @@ -18,6 +18,8 @@ -export([start/0, stop/0]). +-include("rabbit.hrl"). + -define(BaseApps, [rabbit]). -define(ERROR_CODE, 1). @@ -41,14 +43,15 @@ start() -> io:format("Activating RabbitMQ plugins ...~n"), %% Determine our various directories - [PluginDir, UnpackedPluginDir, NodeStr] = init:get_plain_arguments(), + [EnabledPluginsFile, PluginsDistDir, UnpackedPluginDir, NodeStr] = + init:get_plain_arguments(), RootName = UnpackedPluginDir ++ "/rabbit", %% Unpack any .ez plugins - unpack_ez_plugins(PluginDir, UnpackedPluginDir), + unpack_ez_plugins(EnabledPluginsFile, PluginsDistDir, UnpackedPluginDir), %% Build a list of required apps based on the fixed set, and any plugins - PluginApps = find_plugins(PluginDir) ++ find_plugins(UnpackedPluginDir), + PluginApps = find_plugins(UnpackedPluginDir), RequiredApps = ?BaseApps ++ PluginApps, %% Build the entire set of dependencies - this will load the @@ -145,7 +148,11 @@ delete_recursively(Fn) -> Error -> Error end. -unpack_ez_plugins(SrcDir, DestDir) -> +unpack_ez_plugins(EnabledPluginsFile, PluginsDistDir, DestDir) -> + AllPlugins = rabbit_plugins:find_plugins(PluginsDistDir), + Enabled = rabbit_plugins:read_enabled_plugins(EnabledPluginsFile), + ToUnpack = rabbit_plugins:calculate_required_plugins(Enabled, AllPlugins), + %% Eliminate the contents of the destination directory case delete_recursively(DestDir) of ok -> ok; @@ -155,8 +162,9 @@ unpack_ez_plugins(SrcDir, DestDir) -> ok -> ok; {error, E2} -> terminate("Could not create dir ~s (~p)", [DestDir, E2]) end, - [unpack_ez_plugin(PluginName, DestDir) || - PluginName <- filelib:wildcard(SrcDir ++ "/*.ez")]. + [unpack_ez_plugin(PluginLocation, DestDir) || + #plugin{location = PluginLocation} <- + rabbit_plugins:lookup_plugins(ToUnpack, AllPlugins)]. unpack_ez_plugin(PluginFn, PluginDestDir) -> zip:unzip(PluginFn, [{cwd, PluginDestDir}]), |