diff options
author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-22 17:03:53 +0100 |
---|---|---|
committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-22 17:03:53 +0100 |
commit | e8b5e0abfaecb195f4eabd737dc1a353b8112835 (patch) | |
tree | d093a4d7ebaf287d8fdfd92410409d5daa2f13d7 /src/rabbit_prelaunch.erl | |
parent | a5cc5ff81ca47874418e2995029a3933c84e4ce2 (diff) | |
download | rabbitmq-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.erl | 19 |
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) || |