summaryrefslogtreecommitdiff
path: root/src/rabbit_prelaunch.erl
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-22 17:03:53 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2011-09-22 17:03:53 +0100
commite8b5e0abfaecb195f4eabd737dc1a353b8112835 (patch)
treed093a4d7ebaf287d8fdfd92410409d5daa2f13d7 /src/rabbit_prelaunch.erl
parenta5cc5ff81ca47874418e2995029a3933c84e4ce2 (diff)
downloadrabbitmq-server-e8b5e0abfaecb195f4eabd737dc1a353b8112835.tar.gz
the plugins distributions may be either ezs or directories
Turns out the token parser was broken: it didn't work with nested tuples.
Diffstat (limited to 'src/rabbit_prelaunch.erl')
-rw-r--r--src/rabbit_prelaunch.erl19
1 files changed, 10 insertions, 9 deletions
diff --git a/src/rabbit_prelaunch.erl b/src/rabbit_prelaunch.erl
index c67404f3..e6c7344a 100644
--- a/src/rabbit_prelaunch.erl
+++ b/src/rabbit_prelaunch.erl
@@ -47,8 +47,7 @@ start() ->
init:get_plain_arguments(),
RootName = UnpackedPluginDir ++ "/rabbit",
- %% Unpack any .ez plugins
- unpack_ez_plugins(EnabledPluginsFile, PluginsDistDir, UnpackedPluginDir),
+ prepare_plugins(EnabledPluginsFile, PluginsDistDir, UnpackedPluginDir),
%% Build a list of required apps based on the fixed set, and any plugins
PluginApps = find_plugins(UnpackedPluginDir),
@@ -148,7 +147,7 @@ delete_recursively(Fn) ->
Error -> Error
end.
-unpack_ez_plugins(EnabledPluginsFile, PluginsDistDir, DestDir) ->
+prepare_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),
@@ -162,13 +161,15 @@ unpack_ez_plugins(EnabledPluginsFile, PluginsDistDir, DestDir) ->
ok -> ok;
{error, E2} -> terminate("Could not create dir ~s (~p)", [DestDir, E2])
end,
- [unpack_ez_plugin(PluginLocation, DestDir) ||
- #plugin{location = PluginLocation} <-
- rabbit_plugins:lookup_plugins(ToUnpack, AllPlugins)].
-unpack_ez_plugin(PluginFn, PluginDestDir) ->
- zip:unzip(PluginFn, [{cwd, PluginDestDir}]),
- ok.
+ [prepare_plugin(Plugin, DestDir) ||
+ Plugin <- rabbit_plugins:lookup_plugins(ToUnpack, AllPlugins)].
+
+prepare_plugin(#plugin{type = ez, location = Location}, PluginDestDir) ->
+ zip:unzip(Location, [{cwd, PluginDestDir}]);
+prepare_plugin(#plugin{type = dir, name = Name, location = Location},
+ PluginsDestDir) ->
+ file:make_symlink(Location, filename:join([PluginsDestDir, Name])).
find_plugins(PluginDir) ->
[prepare_dir_plugin(PluginName) ||