]> granicus.if.org Git - ejabberd/commitdiff
New ejabberd commands to update modified modules (EJAB-1237)
authorBadlop <badlop@process-one.net>
Mon, 24 May 2010 11:56:52 +0000 (13:56 +0200)
committerBadlop <badlop@process-one.net>
Mon, 24 May 2010 11:58:11 +0000 (13:58 +0200)
src/ejabberd_admin.erl

index f301bcb5612a3d68cf7030026310bee4c902575f..1395ca16720e7c398a490df13769dd799fa7b94f 100644 (file)
@@ -31,6 +31,8 @@
         %% Server
         status/0, reopen_log/0,
         stop_kindly/2, send_service_message_all_mucs/2,
+        %% Erlang
+        update_list/0, update_all/0, update_module/1,
         %% Accounts
         register/3, unregister/2,
         registered_users/1,
@@ -95,6 +97,22 @@ commands() ->
                                                        {leveldesc, string}
                                                       ]}}},
 
+     #ejabberd_commands{name = update_list, tags = [server],
+                       desc = "List modified modules that can be updated",
+                       module = ?MODULE, function = update_list_modified,
+                       args = [],
+                       result = {modules, {list, {module, string}}}},
+     #ejabberd_commands{name = update_all, tags = [server],
+                       desc = "Update all the modified modules",
+                       module = ?MODULE, function = update_all,
+                       args = [],
+                       result = {res, rescode}},
+     #ejabberd_commands{name = update_module, tags = [server],
+                       desc = "Update the given module",
+                       module = ?MODULE, function = update_module,
+                       args = [{module, string}],
+                       result = {res, rescode}},
+
      #ejabberd_commands{name = register, tags = [accounts],
                        desc = "Register a user",
                        module = ?MODULE, function = register,
@@ -276,6 +294,22 @@ send_service_message_all_mucs(Subject, AnnouncementText) ->
       end,
       ?MYHOSTS).
 
+%%%
+%%% ejabberd_update
+%%%
+
+update_list() ->
+    {ok, _Dir, UpdatedBeams, _Script, _LowLevelScript, _Check} =
+       ejabberd_update:update_info(),
+    [atom_to_list(Beam) || Beam <- UpdatedBeams].
+
+update_all() ->
+    [update_module(ModStr) || ModStr <- update_list()].
+
+update_module(ModuleNameString) ->
+    ModuleName = list_to_atom(ModuleNameString),
+    ejabberd_update:update([ModuleName]).
+
 %%%
 %%% Account management
 %%%