diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-09 15:54:02 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2011-09-09 15:54:02 +0100 |
| commit | d57b01da24620440b533749c8c713b319aeb37ca (patch) | |
| tree | 51203ae81f5286c18cf95a0b2cf793267efaa8cb | |
| parent | 5769e15bcdfaabb675d1648640de3a416f0bd053 (diff) | |
| download | rabbitmq-server-git-d57b01da24620440b533749c8c713b319aeb37ca.tar.gz | |
list packages showing which are enabled and which are available
| -rw-r--r-- | src/rabbit_plugin.erl | 27 |
1 files changed, 24 insertions, 3 deletions
diff --git a/src/rabbit_plugin.erl b/src/rabbit_plugin.erl index d5539912ef..31af1748aa 100644 --- a/src/rabbit_plugin.erl +++ b/src/rabbit_plugin.erl @@ -77,11 +77,11 @@ usage() -> %%---------------------------------------------------------------------------- action(list, [], _Opts, PluginsDir, PluginsDistDir) -> - io:format("All plugins: ~p~n", [find_available_plugins(PluginsDistDir)]). + format_plugins(find_plugins(PluginsDir), find_plugins(PluginsDistDir)). %%---------------------------------------------------------------------------- -find_available_plugins(PluginsDistDir) -> +find_plugins(PluginsDistDir) -> EZs = filelib:wildcard("*.ez", PluginsDistDir), {Plugins, Problems} = lists:foldl(fun ({error, EZ, Reason}, {Plugins1, Problems1}) -> @@ -100,7 +100,7 @@ find_available_plugins(PluginsDistDir) -> get_plugin_info(EZ) -> case read_app_file(EZ) of {application, Name, Props} -> - Version = proplists:get_value(vsn, Props), + Version = proplists:get_value(vsn, Props, "0"), Description = proplists:get_value(description, Props, ""), Dependencies = proplists:get_value(applications, Props, []), #plugin{name = Name, version = Version, description = Description, @@ -140,3 +140,24 @@ parse_binary(Bin) -> catch Err -> {error, {invalid_app, Err}} end. + +format_plugins(Enabled, Available) -> + EnabledSet = sets:from_list([Name || #plugin{name = Name} <- Enabled]), + [case sets:is_element(Name, EnabledSet) of + false -> format_available_plugin(Plugin); + true -> format_enabled_plugin(Plugin) + end + || Plugin = #plugin{name = Name} <- lists:usort(fun plugins_cmp/2, + Enabled ++ Available)], + ok. + +format_available_plugin(#plugin{name = Name, version = Version, + description = Description}) -> + io:format("[N] ~w-~s: ~s~n", [Name, Version, Description]). + +format_enabled_plugin(#plugin{name = Name, version = Version, + description = Description}) -> + io:format("[E] ~w-~s: ~s~n", [Name, Version, Description]). + +plugins_cmp(#plugin{name = N1, version = V1}, #plugin{name = N2, version = V2}) -> + {N1, V1} =< {N2, V2}. |
