Change "help" to display categories/module list then "help <category/module>" to display commands in a category.

This is to deal with the hundred lines of command splurge when one previously typed "help"
Modelled somewhat on the mysql console
One can still type help <command> to get per command help at any point.
Categories capitalized to avoid conflict with the all-lowercase commands (except for commander system, as of yet).
Does not affect command parsing or any other aspects of the console apart from the help system.
Backwards compatible with existing modules.
0.7.4.1
Justin Clark-Casey (justincc) 2012-03-08 01:51:37 +00:00
parent 6bdea15ecf
commit 749c3fef8a
35 changed files with 316 additions and 192 deletions

View File

@ -29,6 +29,7 @@ using System;
using System.Xml; using System.Xml;
using System.Collections.Generic; using System.Collections.Generic;
using System.Diagnostics; using System.Diagnostics;
using System.Linq;
using System.Reflection; using System.Reflection;
using System.Text; using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
@ -40,6 +41,8 @@ namespace OpenSim.Framework.Console
{ {
public class Commands : ICommands public class Commands : ICommands
{ {
// private static readonly ILog m_log = LogManager.GetLogger(MethodBase.GetCurrentMethod().DeclaringType);
/// <summary> /// <summary>
/// Encapsulates a command that can be invoked from the console /// Encapsulates a command that can be invoked from the console
/// </summary> /// </summary>
@ -76,12 +79,19 @@ namespace OpenSim.Framework.Console
public List<CommandDelegate> fn; public List<CommandDelegate> fn;
} }
public const string GeneralHelpText = "For more information, type 'help <item>' where <item> is one of the following categories:";
/// <value> /// <value>
/// Commands organized by keyword in a tree /// Commands organized by keyword in a tree
/// </value> /// </value>
private Dictionary<string, object> tree = private Dictionary<string, object> tree =
new Dictionary<string, object>(); new Dictionary<string, object>();
/// <summary>
/// Commands organized by module
/// </summary>
private Dictionary<string, List<CommandInfo>> m_modulesCommands = new Dictionary<string, List<CommandInfo>>();
/// <summary> /// <summary>
/// Get help for the given help string /// Get help for the given help string
/// </summary> /// </summary>
@ -98,8 +108,8 @@ namespace OpenSim.Framework.Console
// General help // General help
if (helpParts.Count == 0) if (helpParts.Count == 0)
{ {
help.AddRange(CollectHelp(tree)); help.Add(GeneralHelpText);
help.Sort(); help.AddRange(CollectModulesHelp(tree));
} }
else else
{ {
@ -119,6 +129,13 @@ namespace OpenSim.Framework.Console
string originalHelpRequest = string.Join(" ", helpParts.ToArray()); string originalHelpRequest = string.Join(" ", helpParts.ToArray());
List<string> help = new List<string>(); List<string> help = new List<string>();
// Check modules first to see if we just need to display a list of those commands
if (TryCollectModuleHelp(originalHelpRequest, help))
{
help.Insert(0, GeneralHelpText);
return help;
}
Dictionary<string, object> dict = tree; Dictionary<string, object> dict = tree;
while (helpParts.Count > 0) while (helpParts.Count > 0)
{ {
@ -161,26 +178,62 @@ namespace OpenSim.Framework.Console
return help; return help;
} }
private List<string> CollectHelp(Dictionary<string, object> dict) /// <summary>
/// Try to collect help for the given module if that module exists.
/// </summary>
/// <param name="moduleName"></param>
/// <param name="helpText">/param>
/// <returns>true if there was the module existed, false otherwise.</returns>
private bool TryCollectModuleHelp(string moduleName, List<string> helpText)
{ {
List<string> result = new List<string>(); lock (m_modulesCommands)
{
if (m_modulesCommands.ContainsKey(moduleName))
{
List<CommandInfo> commands = m_modulesCommands[moduleName];
var ourHelpText = commands.ConvertAll(c => string.Format("{0} - {1}", c.help_text, c.long_help));
ourHelpText.Sort();
helpText.AddRange(ourHelpText);
foreach (KeyValuePair<string, object> kvp in dict) return true;
{
if (kvp.Value is Dictionary<string, Object>)
{
result.AddRange(CollectHelp((Dictionary<string, Object>)kvp.Value));
} }
else else
{ {
if (((CommandInfo)kvp.Value).long_help != String.Empty) return false;
result.Add(((CommandInfo)kvp.Value).help_text+" - "+
((CommandInfo)kvp.Value).long_help);
} }
} }
return result;
} }
private List<string> CollectModulesHelp(Dictionary<string, object> dict)
{
lock (m_modulesCommands)
{
List<string> helpText = new List<string>(m_modulesCommands.Keys);
helpText.Sort();
return helpText;
}
}
// private List<string> CollectHelp(Dictionary<string, object> dict)
// {
// List<string> result = new List<string>();
//
// foreach (KeyValuePair<string, object> kvp in dict)
// {
// if (kvp.Value is Dictionary<string, Object>)
// {
// result.AddRange(CollectHelp((Dictionary<string, Object>)kvp.Value));
// }
// else
// {
// if (((CommandInfo)kvp.Value).long_help != String.Empty)
// result.Add(((CommandInfo)kvp.Value).help_text+" - "+
// ((CommandInfo)kvp.Value).long_help);
// }
// }
// return result;
// }
/// <summary> /// <summary>
/// Add a command to those which can be invoked from the console. /// Add a command to those which can be invoked from the console.
/// </summary> /// </summary>
@ -212,21 +265,19 @@ namespace OpenSim.Framework.Console
Dictionary<string, Object> current = tree; Dictionary<string, Object> current = tree;
foreach (string s in parts) foreach (string part in parts)
{ {
if (current.ContainsKey(s)) if (current.ContainsKey(part))
{ {
if (current[s] is Dictionary<string, Object>) if (current[part] is Dictionary<string, Object>)
{ current = (Dictionary<string, Object>)current[part];
current = (Dictionary<string, Object>)current[s];
}
else else
return; return;
} }
else else
{ {
current[s] = new Dictionary<string, Object>(); current[part] = new Dictionary<string, Object>();
current = (Dictionary<string, Object>)current[s]; current = (Dictionary<string, Object>)current[part];
} }
} }
@ -250,6 +301,24 @@ namespace OpenSim.Framework.Console
info.fn = new List<CommandDelegate>(); info.fn = new List<CommandDelegate>();
info.fn.Add(fn); info.fn.Add(fn);
current[String.Empty] = info; current[String.Empty] = info;
// Now add command to modules dictionary
lock (m_modulesCommands)
{
List<CommandInfo> commands;
if (m_modulesCommands.ContainsKey(module))
{
commands = m_modulesCommands[module];
}
else
{
commands = new List<CommandInfo>();
m_modulesCommands[module] = commands;
}
// m_log.DebugFormat("[COMMAND CONSOLE]: Adding to category {0} command {1}", module, command);
commands.Add(info);
}
} }
public string[] FindNextOption(string[] cmd, bool term) public string[] FindNextOption(string[] cmd, bool term)
@ -607,8 +676,9 @@ namespace OpenSim.Framework.Console
{ {
Commands = new Commands(); Commands = new Commands();
Commands.AddCommand("console", false, "help", "help [<command>]", Commands.AddCommand(
"Get general command list or more detailed help on a specific command", Help); "Help", false, "help", "help [<item>]",
"Display help on a particular command or on a list of commands in a category", Help);
} }
private void Help(string module, string[] cmd) private void Help(string module, string[] cmd)

View File

@ -40,7 +40,7 @@ namespace OpenSim.Framework
/// <summary> /// <summary>
/// Get help for the given help string /// Get help for the given help string
/// </summary> /// </summary>
/// <param name="helpParts">Parsed parts of the help string. If empty then general help is returned.</param> /// <param name="cmd">Parsed parts of the help string. If empty then general help is returned.</param>
/// <returns></returns> /// <returns></returns>
List<string> GetHelp(string[] cmd); List<string> GetHelp(string[] cmd);

View File

@ -161,43 +161,43 @@ namespace OpenSim.Framework.Servers
Notice(String.Format("Console log level is {0}", m_consoleAppender.Threshold)); Notice(String.Format("Console log level is {0}", m_consoleAppender.Threshold));
} }
m_console.Commands.AddCommand("base", false, "quit", m_console.Commands.AddCommand("General", false, "quit",
"quit", "quit",
"Quit the application", HandleQuit); "Quit the application", HandleQuit);
m_console.Commands.AddCommand("base", false, "shutdown", m_console.Commands.AddCommand("General", false, "shutdown",
"shutdown", "shutdown",
"Quit the application", HandleQuit); "Quit the application", HandleQuit);
m_console.Commands.AddCommand("base", false, "set log level", m_console.Commands.AddCommand("General", false, "set log level",
"set log level <level>", "set log level <level>",
"Set the console logging level", HandleLogLevel); "Set the console logging level", HandleLogLevel);
m_console.Commands.AddCommand("base", false, "show info", m_console.Commands.AddCommand("General", false, "show info",
"show info", "show info",
"Show general information about the server", HandleShow); "Show general information about the server", HandleShow);
m_console.Commands.AddCommand("base", false, "show stats", m_console.Commands.AddCommand("General", false, "show stats",
"show stats", "show stats",
"Show statistics", HandleShow); "Show statistics", HandleShow);
m_console.Commands.AddCommand("base", false, "show threads", m_console.Commands.AddCommand("General", false, "show threads",
"show threads", "show threads",
"Show thread status", HandleShow); "Show thread status", HandleShow);
m_console.Commands.AddCommand("base", false, "show uptime", m_console.Commands.AddCommand("General", false, "show uptime",
"show uptime", "show uptime",
"Show server uptime", HandleShow); "Show server uptime", HandleShow);
m_console.Commands.AddCommand("base", false, "show version", m_console.Commands.AddCommand("General", false, "show version",
"show version", "show version",
"Show server version", HandleShow); "Show server version", HandleShow);
m_console.Commands.AddCommand("base", false, "threads abort", m_console.Commands.AddCommand("General", false, "threads abort",
"threads abort <thread-id>", "threads abort <thread-id>",
"Abort a managed thread. Use \"show threads\" to find possible threads.", HandleThreadsAbort); "Abort a managed thread. Use \"show threads\" to find possible threads.", HandleThreadsAbort);
m_console.Commands.AddCommand("base", false, "threads show", m_console.Commands.AddCommand("General", false, "threads show",
"threads show", "threads show",
"Show thread status. Synonym for \"show threads\"", "Show thread status. Synonym for \"show threads\"",
(string module, string[] args) => Notice(GetThreadsReport())); (string module, string[] args) => Notice(GetThreadsReport()));

View File

@ -225,12 +225,12 @@ namespace OpenSim
/// </summary> /// </summary>
private void RegisterConsoleCommands() private void RegisterConsoleCommands()
{ {
m_console.Commands.AddCommand("region", false, "force update", m_console.Commands.AddCommand("Regions", false, "force update",
"force update", "force update",
"Force the update of all objects on clients", "Force the update of all objects on clients",
HandleForceUpdate); HandleForceUpdate);
m_console.Commands.AddCommand("region", false, "debug packet", m_console.Commands.AddCommand("Comms", false, "debug packet",
"debug packet <level> [<avatar-first-name> <avatar-last-name>]", "debug packet <level> [<avatar-first-name> <avatar-last-name>]",
"Turn on packet debugging", "Turn on packet debugging",
"If level > 255 then all incoming and outgoing packets are logged.\n" "If level > 255 then all incoming and outgoing packets are logged.\n"
@ -242,7 +242,7 @@ namespace OpenSim
+ "If an avatar name is given then only packets from that avatar are logged", + "If an avatar name is given then only packets from that avatar are logged",
Debug); Debug);
m_console.Commands.AddCommand("region", false, "debug http", m_console.Commands.AddCommand("Comms", false, "debug http",
"debug http <level>", "debug http <level>",
"Turn on inbound http request debugging for everything except the event queue (see debug eq).", "Turn on inbound http request debugging for everything except the event queue (see debug eq).",
"If level >= 2 then the handler used to service the request is logged.\n" "If level >= 2 then the handler used to service the request is logged.\n"
@ -250,37 +250,37 @@ namespace OpenSim
+ "If level <= 0 then no extra http logging is done.\n", + "If level <= 0 then no extra http logging is done.\n",
Debug); Debug);
m_console.Commands.AddCommand("region", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug); m_console.Commands.AddCommand("Comms", false, "debug teleport", "debug teleport", "Toggle teleport route debugging", Debug);
m_console.Commands.AddCommand("region", false, "debug scene", m_console.Commands.AddCommand("Regions", false, "debug scene",
"debug scene <scripting> <collisions> <physics>", "debug scene <scripting> <collisions> <physics>",
"Turn on scene debugging", Debug); "Turn on scene debugging", Debug);
m_console.Commands.AddCommand("region", false, "change region", m_console.Commands.AddCommand("Regions", false, "change region",
"change region <region name>", "change region <region name>",
"Change current console region", ChangeSelectedRegion); "Change current console region", ChangeSelectedRegion);
m_console.Commands.AddCommand("region", false, "save xml", m_console.Commands.AddCommand("Archiving", false, "save xml",
"save xml", "save xml",
"Save a region's data in XML format", SaveXml); "Save a region's data in XML format", SaveXml);
m_console.Commands.AddCommand("region", false, "save xml2", m_console.Commands.AddCommand("Archiving", false, "save xml2",
"save xml2", "save xml2",
"Save a region's data in XML2 format", SaveXml2); "Save a region's data in XML2 format", SaveXml2);
m_console.Commands.AddCommand("region", false, "load xml", m_console.Commands.AddCommand("Archiving", false, "load xml",
"load xml [-newIDs [<x> <y> <z>]]", "load xml [-newIDs [<x> <y> <z>]]",
"Load a region's data from XML format", LoadXml); "Load a region's data from XML format", LoadXml);
m_console.Commands.AddCommand("region", false, "load xml2", m_console.Commands.AddCommand("Archiving", false, "load xml2",
"load xml2", "load xml2",
"Load a region's data from XML2 format", LoadXml2); "Load a region's data from XML2 format", LoadXml2);
m_console.Commands.AddCommand("region", false, "save prims xml2", m_console.Commands.AddCommand("Archiving", false, "save prims xml2",
"save prims xml2 [<prim name> <file name>]", "save prims xml2 [<prim name> <file name>]",
"Save named prim to XML2", SavePrimsXml2); "Save named prim to XML2", SavePrimsXml2);
m_console.Commands.AddCommand("region", false, "load oar", m_console.Commands.AddCommand("Archiving", false, "load oar",
"load oar [--merge] [--skip-assets] [<OAR path>]", "load oar [--merge] [--skip-assets] [<OAR path>]",
"Load a region's data from an OAR archive.", "Load a region's data from an OAR archive.",
"--merge will merge the OAR with the existing scene." + Environment.NewLine "--merge will merge the OAR with the existing scene." + Environment.NewLine
@ -289,7 +289,7 @@ namespace OpenSim
+ " If this is not given then the command looks for an OAR named region.oar in the current directory.", + " If this is not given then the command looks for an OAR named region.oar in the current directory.",
LoadOar); LoadOar);
m_console.Commands.AddCommand("region", false, "save oar", m_console.Commands.AddCommand("Archiving", false, "save oar",
//"save oar [-v|--version=<N>] [-p|--profile=<url>] [<OAR path>]", //"save oar [-v|--version=<N>] [-p|--profile=<url>] [<OAR path>]",
"save oar [-h|--home=<url>] [--noassets] [--publish] [--perm=<permissions>] [<OAR path>]", "save oar [-h|--home=<url>] [--noassets] [--publish] [--perm=<permissions>] [<OAR path>]",
"Save a region's data to an OAR archive.", "Save a region's data to an OAR archive.",
@ -306,54 +306,54 @@ namespace OpenSim
+ " If this is not given then the oar is saved to region.oar in the current directory.", + " If this is not given then the oar is saved to region.oar in the current directory.",
SaveOar); SaveOar);
m_console.Commands.AddCommand("region", false, "edit scale", m_console.Commands.AddCommand("Regions", false, "edit scale",
"edit scale <name> <x> <y> <z>", "edit scale <name> <x> <y> <z>",
"Change the scale of a named prim", HandleEditScale); "Change the scale of a named prim", HandleEditScale);
m_console.Commands.AddCommand("region", false, "kick user", m_console.Commands.AddCommand("Users", false, "kick user",
"kick user <first> <last> [message]", "kick user <first> <last> [message]",
"Kick a user off the simulator", KickUserCommand); "Kick a user off the simulator", KickUserCommand);
m_console.Commands.AddCommand("region", false, "show users", m_console.Commands.AddCommand("Users", false, "show users",
"show users [full]", "show users [full]",
"Show user data for users currently on the region", "Show user data for users currently on the region",
"Without the 'full' option, only users actually on the region are shown." "Without the 'full' option, only users actually on the region are shown."
+ " With the 'full' option child agents of users in neighbouring regions are also shown.", + " With the 'full' option child agents of users in neighbouring regions are also shown.",
HandleShow); HandleShow);
m_console.Commands.AddCommand("region", false, "show connections", m_console.Commands.AddCommand("Comms", false, "show connections",
"show connections", "show connections",
"Show connection data", HandleShow); "Show connection data", HandleShow);
m_console.Commands.AddCommand("region", false, "show circuits", m_console.Commands.AddCommand("Comms", false, "show circuits",
"show circuits", "show circuits",
"Show agent circuit data", HandleShow); "Show agent circuit data", HandleShow);
m_console.Commands.AddCommand("region", false, "show http-handlers", m_console.Commands.AddCommand("Comms", false, "show http-handlers",
"show http-handlers", "show http-handlers",
"Show all registered http handlers", HandleShow); "Show all registered http handlers", HandleShow);
m_console.Commands.AddCommand("region", false, "show pending-objects", m_console.Commands.AddCommand("Comms", false, "show pending-objects",
"show pending-objects", "show pending-objects",
"Show # of objects on the pending queues of all scene viewers", HandleShow); "Show # of objects on the pending queues of all scene viewers", HandleShow);
m_console.Commands.AddCommand("region", false, "show modules", m_console.Commands.AddCommand("General", false, "show modules",
"show modules", "show modules",
"Show module data", HandleShow); "Show module data", HandleShow);
m_console.Commands.AddCommand("region", false, "show regions", m_console.Commands.AddCommand("Regions", false, "show regions",
"show regions", "show regions",
"Show region data", HandleShow); "Show region data", HandleShow);
m_console.Commands.AddCommand("region", false, "show ratings", m_console.Commands.AddCommand("Regions", false, "show ratings",
"show ratings", "show ratings",
"Show rating data", HandleShow); "Show rating data", HandleShow);
m_console.Commands.AddCommand("region", false, "backup", m_console.Commands.AddCommand("Regions", false, "backup",
"backup", "backup",
"Persist currently unsaved object changes immediately instead of waiting for the normal persistence call.", RunCommand); "Persist currently unsaved object changes immediately instead of waiting for the normal persistence call.", RunCommand);
m_console.Commands.AddCommand("region", false, "create region", m_console.Commands.AddCommand("Regions", false, "create region",
"create region [\"region name\"] <region_file.ini>", "create region [\"region name\"] <region_file.ini>",
"Create a new region.", "Create a new region.",
"The settings for \"region name\" are read from <region_file.ini>. Paths specified with <region_file.ini> are relative to your Regions directory, unless an absolute path is given." "The settings for \"region name\" are read from <region_file.ini>. Paths specified with <region_file.ini> are relative to your Regions directory, unless an absolute path is given."
@ -362,62 +362,57 @@ namespace OpenSim
+ "If <region_file.ini> does not exist, it will be created.", + "If <region_file.ini> does not exist, it will be created.",
HandleCreateRegion); HandleCreateRegion);
m_console.Commands.AddCommand("region", false, "restart", m_console.Commands.AddCommand("Regions", false, "restart",
"restart", "restart",
"Restart all sims in this instance", RunCommand); "Restart all sims in this instance", RunCommand);
m_console.Commands.AddCommand("region", false, "config set", m_console.Commands.AddCommand("General", false, "config set",
"config set <section> <key> <value>", "config set <section> <key> <value>",
"Set a config option. In most cases this is not useful since changed parameters are not dynamically reloaded. Neither do changed parameters persist - you will have to change a config file manually and restart.", HandleConfig); "Set a config option. In most cases this is not useful since changed parameters are not dynamically reloaded. Neither do changed parameters persist - you will have to change a config file manually and restart.", HandleConfig);
m_console.Commands.AddCommand("region", false, "config get", m_console.Commands.AddCommand("General", false, "config get",
"config get [<section>] [<key>]", "config get [<section>] [<key>]",
"Synonym for config show", "Synonym for config show",
HandleConfig); HandleConfig);
m_console.Commands.AddCommand("region", false, "config show", m_console.Commands.AddCommand("General", false, "config show",
"config show [<section>] [<key>]", "config show [<section>] [<key>]",
"Show config information", "Show config information",
"If neither section nor field are specified, then the whole current configuration is printed." + Environment.NewLine "If neither section nor field are specified, then the whole current configuration is printed." + Environment.NewLine
+ "If a section is given but not a field, then all fields in that section are printed.", + "If a section is given but not a field, then all fields in that section are printed.",
HandleConfig); HandleConfig);
m_console.Commands.AddCommand("region", false, "config save", m_console.Commands.AddCommand("General", false, "config save",
"config save <path>", "config save <path>",
"Save current configuration to a file at the given path", HandleConfig); "Save current configuration to a file at the given path", HandleConfig);
m_console.Commands.AddCommand("region", false, "command-script", m_console.Commands.AddCommand("General", false, "command-script",
"command-script <script>", "command-script <script>",
"Run a command script from file", RunCommand); "Run a command script from file", RunCommand);
m_console.Commands.AddCommand("region", false, "remove-region", m_console.Commands.AddCommand("Regions", false, "remove-region",
"remove-region <name>", "remove-region <name>",
"Remove a region from this simulator", RunCommand); "Remove a region from this simulator", RunCommand);
m_console.Commands.AddCommand("region", false, "delete-region", m_console.Commands.AddCommand("Regions", false, "delete-region",
"delete-region <name>", "delete-region <name>",
"Delete a region from disk", RunCommand); "Delete a region from disk", RunCommand);
m_console.Commands.AddCommand("region", false, "modules list", m_console.Commands.AddCommand("General", false, "modules list",
"modules list", "modules list",
"List modules", HandleModules); "List modules", HandleModules);
m_console.Commands.AddCommand("region", false, "modules load", m_console.Commands.AddCommand("General", false, "modules load",
"modules load <name>", "modules load <name>",
"Load a module", HandleModules); "Load a module", HandleModules);
m_console.Commands.AddCommand("region", false, "modules unload", m_console.Commands.AddCommand("General", false, "modules unload",
"modules unload <name>", "modules unload <name>",
"Unload a module", HandleModules); "Unload a module", HandleModules);
m_console.Commands.AddCommand("region", false, "Add-InventoryHost", m_console.Commands.AddCommand("Regions", false, "kill uuid",
"Add-InventoryHost <host>",
String.Empty, RunCommand);
m_console.Commands.AddCommand("region", false, "kill uuid",
"kill uuid <UUID>", "kill uuid <UUID>",
"Kill an object by UUID", KillUUID); "Kill an object by UUID", KillUUID);
} }
public override void ShutdownSpecific() public override void ShutdownSpecific()
@ -829,14 +824,6 @@ namespace OpenSim
case "restart": case "restart":
m_sceneManager.RestartCurrentScene(); m_sceneManager.RestartCurrentScene();
break; break;
case "Add-InventoryHost":
if (cmdparams.Length > 0)
{
MainConsole.Instance.Output("Not implemented.");
}
break;
} }
} }

View File

@ -242,15 +242,15 @@ namespace OpenSim
foreach (string topic in topics) foreach (string topic in topics)
{ {
m_console.Commands.AddCommand("plugin", false, "help " + topic, m_console.Commands.AddCommand(topic, false, "help " + topic,
"help " + topic, "help " + topic,
"Get help on plugin command '" + topic + "'", "Get help on plugin command '" + topic + "'",
HandleCommanderHelp); HandleCommanderHelp);
//
m_console.Commands.AddCommand("plugin", false, topic, // m_console.Commands.AddCommand("General", false, topic,
topic, // topic,
"Execute subcommand for plugin '" + topic + "'", // "Execute subcommand for plugin '" + topic + "'",
null); // null);
ICommander commander = null; ICommander commander = null;

View File

@ -106,7 +106,7 @@ namespace OpenSim.Region.ClientStack.Linden
scene.EventManager.OnRegisterCaps += OnRegisterCaps; scene.EventManager.OnRegisterCaps += OnRegisterCaps;
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"event queue", "Comms",
false, false,
"debug eq", "debug eq",
"debug eq [0|1]", "debug eq [0|1]",

View File

@ -203,10 +203,10 @@ namespace Flotsam.RegionModules.AssetCache
m_CacheDirectoryTierLen = 4; m_CacheDirectoryTierLen = 4;
} }
MainConsole.Instance.Commands.AddCommand(Name, true, "fcache status", "fcache status", "Display cache status", HandleConsoleCommand); MainConsole.Instance.Commands.AddCommand("Assets", true, "fcache status", "fcache status", "Display cache status", HandleConsoleCommand);
MainConsole.Instance.Commands.AddCommand(Name, true, "fcache clear", "fcache clear [file] [memory]", "Remove all assets in the cache. If file or memory is specified then only this cache is cleared.", HandleConsoleCommand); MainConsole.Instance.Commands.AddCommand("Assets", true, "fcache clear", "fcache clear [file] [memory]", "Remove all assets in the cache. If file or memory is specified then only this cache is cleared.", HandleConsoleCommand);
MainConsole.Instance.Commands.AddCommand(Name, true, "fcache assets", "fcache assets", "Attempt a deep scan and cache of all assets in all scenes", HandleConsoleCommand); MainConsole.Instance.Commands.AddCommand("Assets", true, "fcache assets", "fcache assets", "Attempt a deep scan and cache of all assets in all scenes", HandleConsoleCommand);
MainConsole.Instance.Commands.AddCommand(Name, true, "fcache expire", "fcache expire <datetime>", "Purge cached assets older then the specified date/time", HandleConsoleCommand); MainConsole.Instance.Commands.AddCommand("Assets", true, "fcache expire", "fcache expire <datetime>", "Purge cached assets older then the specified date/time", HandleConsoleCommand);
} }
} }
} }

View File

@ -51,12 +51,12 @@ namespace OpenSim.Region.CoreModules.Avatar.Dialog
m_scene.RegisterModuleInterface<IDialogModule>(this); m_scene.RegisterModuleInterface<IDialogModule>(this);
m_scene.AddCommand( m_scene.AddCommand(
this, "alert", "alert <message>", "Users", this, "alert", "alert <message>",
"Send an alert to everyone", "Send an alert to everyone",
HandleAlertConsoleCommand); HandleAlertConsoleCommand);
m_scene.AddCommand( m_scene.AddCommand(
this, "alert-user", "alert-user <first> <last> <message>", "Users", this, "alert-user", "alert-user <first> <last> <message>",
"Send an alert to a user", "Send an alert to a user",
HandleAlertConsoleCommand); HandleAlertConsoleCommand);
} }

View File

@ -108,7 +108,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
OnInventoryArchiveSaved += SaveInvConsoleCommandCompleted; OnInventoryArchiveSaved += SaveInvConsoleCommandCompleted;
scene.AddCommand( scene.AddCommand(
this, "load iar", "Archiving", this, "load iar",
"load iar [-m|--merge] <first> <last> <inventory path> <password> [<IAR path>]", "load iar [-m|--merge] <first> <last> <inventory path> <password> [<IAR path>]",
"Load user inventory archive (IAR).", "Load user inventory archive (IAR).",
"-m|--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones" "-m|--merge is an option which merges the loaded IAR with existing inventory folders where possible, rather than always creating new ones"
@ -121,7 +121,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Inventory.Archiver
HandleLoadInvConsoleCommand); HandleLoadInvConsoleCommand);
scene.AddCommand( scene.AddCommand(
this, "save iar", "Archiving", this, "save iar",
"save iar [-h|--home=<url>] [--noassets] <first> <last> <inventory path> <password> [<IAR path>] [-c|--creators] [-v|--verbose]", "save iar [-h|--home=<url>] [--noassets] <first> <last> <inventory path> <password> [<IAR path>] [-c|--creators] [-v|--verbose]",
"Save user inventory archive (IAR).", "Save user inventory archive (IAR).",
"<first> is the user's first name." + Environment.NewLine "<first> is the user's first name." + Environment.NewLine

View File

@ -69,9 +69,10 @@ namespace OpenSim.Region.CoreModules.Framework
{ {
m_scene = scene; m_scene = scene;
m_scene.RegisterModuleInterface<ICapabilitiesModule>(this); m_scene.RegisterModuleInterface<ICapabilitiesModule>(this);
MainConsole.Instance.Commands.AddCommand("Capabilities", false, "show caps",
MainConsole.Instance.Commands.AddCommand("Comms", false, "show caps",
"show caps", "show caps",
"Shows all registered capabilities", HandleShowCapsCommand); "Shows all registered capabilities for users", HandleShowCapsCommand);
} }
public void RegionLoaded(Scene scene) public void RegionLoaded(Scene scene)

View File

@ -72,7 +72,7 @@ namespace OpenSim.Region.CoreModules.Framework.Monitoring
m_scene = scene; m_scene = scene;
m_scene.AddCommand(this, "monitor report", m_scene.AddCommand("General", this, "monitor report",
"monitor report", "monitor report",
"Returns a variety of statistics about the current region and/or simulator", "Returns a variety of statistics about the current region and/or simulator",
DebugMonitors); DebugMonitors);

View File

@ -80,7 +80,7 @@ namespace OpenSim.Region.CoreModules.Framework.UserManagement
// } // }
// } // }
//} //}
MainConsole.Instance.Commands.AddCommand("grid", true, MainConsole.Instance.Commands.AddCommand("Users", true,
"show names", "show names",
"show names", "show names",
"Show the bindings between user UUIDs and user names", "Show the bindings between user UUIDs and user names",

View File

@ -122,7 +122,7 @@ namespace OpenSim.Region.CoreModules.ServiceConnectorsOut.Grid
public void PostInitialise() public void PostInitialise()
{ {
MainConsole.Instance.Commands.AddCommand("LocalGridConnector", false, "show neighbours", MainConsole.Instance.Commands.AddCommand("Regions", false, "show neighbours",
"show neighbours", "show neighbours",
"Shows the local regions' neighbours", NeighboursCommand); "Shows the local regions' neighbours", NeighboursCommand);
} }

View File

@ -47,21 +47,21 @@ namespace OpenSim.Region.CoreModules.World
public void Initialise(IConfigSource config) public void Initialise(IConfigSource config)
{ {
MainConsole.Instance.Commands.AddCommand("access", true, MainConsole.Instance.Commands.AddCommand("Users", true,
"login enable", "login enable",
"login enable", "login enable",
"Enable simulator logins", "Enable simulator logins",
String.Empty, String.Empty,
HandleLoginCommand); HandleLoginCommand);
MainConsole.Instance.Commands.AddCommand("access", true, MainConsole.Instance.Commands.AddCommand("Users", true,
"login disable", "login disable",
"login disable", "login disable",
"Disable simulator logins", "Disable simulator logins",
String.Empty, String.Empty,
HandleLoginCommand); HandleLoginCommand);
MainConsole.Instance.Commands.AddCommand("access", true, MainConsole.Instance.Commands.AddCommand("Users", true,
"login status", "login status",
"login status", "login status",
"Show login status", "Show login status",

View File

@ -62,14 +62,14 @@ namespace OpenSim.Region.CoreModules.World.Estate
{ {
m_log.DebugFormat("[ESTATE MODULE]: Setting up estate commands for region {0}", m_module.Scene.RegionInfo.RegionName); m_log.DebugFormat("[ESTATE MODULE]: Setting up estate commands for region {0}", m_module.Scene.RegionInfo.RegionName);
m_module.Scene.AddCommand(m_module, "set terrain texture", m_module.Scene.AddCommand("estate", m_module, "set terrain texture",
"set terrain texture <number> <uuid> [<x>] [<y>]", "set terrain texture <number> <uuid> [<x>] [<y>]",
"Sets the terrain <number> to <uuid>, if <x> or <y> are specified, it will only " + "Sets the terrain <number> to <uuid>, if <x> or <y> are specified, it will only " +
"set it on regions with a matching coordinate. Specify -1 in <x> or <y> to wildcard" + "set it on regions with a matching coordinate. Specify -1 in <x> or <y> to wildcard" +
" that coordinate.", " that coordinate.",
consoleSetTerrainTexture); consoleSetTerrainTexture);
m_module.Scene.AddCommand(m_module, "set terrain heights", m_module.Scene.AddCommand("estate", m_module, "set terrain heights",
"set terrain heights <corner> <min> <max> [<x>] [<y>]", "set terrain heights <corner> <min> <max> [<x>] [<y>]",
"Sets the terrain texture heights on corner #<corner> to <min>/<max>, if <x> or <y> are specified, it will only " + "Sets the terrain texture heights on corner #<corner> to <min>/<max>, if <x> or <y> are specified, it will only " +
"set it on regions with a matching coordinate. Specify -1 in <x> or <y> to wildcard" + "set it on regions with a matching coordinate. Specify -1 in <x> or <y> to wildcard" +

View File

@ -78,45 +78,45 @@ namespace OpenSim.Region.CoreModules.World.Objects.Commands
m_scene = scene; m_scene = scene;
m_console = MainConsole.Instance; m_console = MainConsole.Instance;
m_console.Commands.AddCommand("region", false, "delete object owner", m_console.Commands.AddCommand("Regions", false, "delete object owner",
"delete object owner <UUID>", "delete object owner <UUID>",
"Delete a scene object by owner", HandleDeleteObject); "Delete a scene object by owner", HandleDeleteObject);
m_console.Commands.AddCommand("region", false, "delete object creator", m_console.Commands.AddCommand("Regions", false, "delete object creator",
"delete object creator <UUID>", "delete object creator <UUID>",
"Delete a scene object by creator", HandleDeleteObject); "Delete a scene object by creator", HandleDeleteObject);
m_console.Commands.AddCommand("region", false, "delete object uuid", m_console.Commands.AddCommand("Regions", false, "delete object uuid",
"delete object uuid <UUID>", "delete object uuid <UUID>",
"Delete a scene object by uuid", HandleDeleteObject); "Delete a scene object by uuid", HandleDeleteObject);
m_console.Commands.AddCommand("region", false, "delete object name", m_console.Commands.AddCommand("Regions", false, "delete object name",
"delete object name <name>", "delete object name <name>",
"Delete a scene object by name", HandleDeleteObject); "Delete a scene object by name", HandleDeleteObject);
m_console.Commands.AddCommand("region", false, "delete object outside", m_console.Commands.AddCommand("Regions", false, "delete object outside",
"delete object outside", "delete object outside",
"Delete all scene objects outside region boundaries", HandleDeleteObject); "Delete all scene objects outside region boundaries", HandleDeleteObject);
m_console.Commands.AddCommand( m_console.Commands.AddCommand(
"region", "Regions",
false, false,
"show object uuid", "show object uuid",
"show object uuid <UUID>", "show object uuid <UUID>",
"Show details of a scene object with the given UUID", HandleShowObjectByUuid); "Show details of a scene object with the given UUID", HandleShowObjectByUuid);
m_console.Commands.AddCommand( m_console.Commands.AddCommand(
"region", "Regions",
false, false,
"show object name", "show object name",
"show object name <name>", "show object name <name>",
"Show details of scene objects with the given name", HandleShowObjectByName); "Show details of scene objects with the given name", HandleShowObjectByName);
m_console.Commands.AddCommand( m_console.Commands.AddCommand(
"region", "Regions",
false, false,
"show part uuid", "show part uuid",
"show part uuid <UUID>", "show part uuid <UUID>",
"Show details of a scene object parts with the given UUID", HandleShowPartByUuid); "Show details of a scene object parts with the given UUID", HandleShowPartByUuid);
m_console.Commands.AddCommand( m_console.Commands.AddCommand(
"region", "Regions",
false, false,
"show part name", "show part name",
"show part name <name>", "show part name <name>",

View File

@ -206,17 +206,17 @@ namespace OpenSim.Region.CoreModules.World.Permissions
m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia; m_scene.Permissions.OnControlPrimMedia += CanControlPrimMedia;
m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia; m_scene.Permissions.OnInteractWithPrimMedia += CanInteractWithPrimMedia;
m_scene.AddCommand(this, "bypass permissions", m_scene.AddCommand("Users", this, "bypass permissions",
"bypass permissions <true / false>", "bypass permissions <true / false>",
"Bypass permission checks", "Bypass permission checks",
HandleBypassPermissions); HandleBypassPermissions);
m_scene.AddCommand(this, "force permissions", m_scene.AddCommand("Users", this, "force permissions",
"force permissions <true / false>", "force permissions <true / false>",
"Force permissions on or off", "Force permissions on or off",
HandleForcePermissions); HandleForcePermissions);
m_scene.AddCommand(this, "debug permissions", m_scene.AddCommand("Users", this, "debug permissions",
"debug permissions <true / false>", "debug permissions <true / false>",
"Turn on permissions debugging", "Turn on permissions debugging",
HandleDebugPermissions); HandleDebugPermissions);

View File

@ -66,21 +66,21 @@ namespace OpenSim.Region.CoreModules.World.Region
m_Scene = scene; m_Scene = scene;
scene.RegisterModuleInterface<IRestartModule>(this); scene.RegisterModuleInterface<IRestartModule>(this);
MainConsole.Instance.Commands.AddCommand("RestartModule", MainConsole.Instance.Commands.AddCommand("Regions",
false, "region restart bluebox", false, "region restart bluebox",
"region restart bluebox <message> <delta seconds>+", "region restart bluebox <message> <delta seconds>+",
"Schedule a region restart", "Schedule a region restart",
"Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a dismissable bluebox notice. If multiple deltas are given then a notice is sent when we reach each delta.", "Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a dismissable bluebox notice. If multiple deltas are given then a notice is sent when we reach each delta.",
HandleRegionRestart); HandleRegionRestart);
MainConsole.Instance.Commands.AddCommand("RestartModule", MainConsole.Instance.Commands.AddCommand("Regions",
false, "region restart notice", false, "region restart notice",
"region restart notice <message> <delta seconds>+", "region restart notice <message> <delta seconds>+",
"Schedule a region restart", "Schedule a region restart",
"Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a transient notice. If multiple deltas are given then a notice is sent when we reach each delta.", "Schedule a region restart after a given number of seconds. If one delta is given then the region is restarted in delta seconds time. A time to restart is sent to users in the region as a transient notice. If multiple deltas are given then a notice is sent when we reach each delta.",
HandleRegionRestart); HandleRegionRestart);
MainConsole.Instance.Commands.AddCommand("RestartModule", MainConsole.Instance.Commands.AddCommand("Regions",
false, "region restart abort", false, "region restart abort",
"region restart abort [<message>]", "region restart abort [<message>]",
"Abort a region restart", HandleRegionRestart); "Abort a region restart", HandleRegionRestart);

View File

@ -277,18 +277,19 @@ namespace OpenSim.Region.CoreModules
m_frame = 0; m_frame = 0;
// This one puts an entry in the main help screen // This one puts an entry in the main help screen
m_scene.AddCommand(this, String.Empty, "sun", "Usage: sun [param] [value] - Get or Update Sun module paramater", null); // m_scene.AddCommand("Regions", this, "sun", "sun", "Usage: sun [param] [value] - Get or Update Sun module paramater", null);
// This one enables the ability to type just "sun" without any parameters // This one enables the ability to type just "sun" without any parameters
m_scene.AddCommand(this, "sun", "", "", HandleSunConsoleCommand); // m_scene.AddCommand("Regions", this, "sun", "", "", HandleSunConsoleCommand);
foreach (KeyValuePair<string, string> kvp in GetParamList()) foreach (KeyValuePair<string, string> kvp in GetParamList())
{ {
m_scene.AddCommand(this, String.Format("sun {0}", kvp.Key), String.Format("{0} - {1}", kvp.Key, kvp.Value), "", HandleSunConsoleCommand); string sunCommand = string.Format("sun {0}", kvp.Key);
m_scene.AddCommand("Regions", this, sunCommand, string.Format("{0} [<value>]", sunCommand), kvp.Value, "", HandleSunConsoleCommand);
} }
TimeZone local = TimeZone.CurrentTimeZone; TimeZone local = TimeZone.CurrentTimeZone;
TicksUTCOffset = local.GetUtcOffset(local.ToLocalTime(DateTime.Now)).Ticks; TicksUTCOffset = local.GetUtcOffset(local.ToLocalTime(DateTime.Now)).Ticks;
m_log.Debug("[SUN]: localtime offset is " + TicksUTCOffset); m_log.DebugFormat("[SUN]: localtime offset is {0}", TicksUTCOffset);
// Align ticks with Second Life // Align ticks with Second Life

View File

@ -117,24 +117,31 @@ namespace OpenSim.Region.CoreModules
} }
// This one puts an entry in the main help screen // This one puts an entry in the main help screen
m_scene.AddCommand(this, String.Empty, "wind", "Usage: wind <plugin> <param> [value] - Get or Update Wind paramaters", null); // m_scene.AddCommand("Regions", this, "wind", "wind", "Usage: wind <plugin> <param> [value] - Get or Update Wind paramaters", null);
// This one enables the ability to type just the base command without any parameters // This one enables the ability to type just the base command without any parameters
m_scene.AddCommand(this, "wind", "", "", HandleConsoleCommand); // m_scene.AddCommand("Regions", this, "wind", "", "", HandleConsoleCommand);
// Get a list of the parameters for each plugin // Get a list of the parameters for each plugin
foreach (IWindModelPlugin windPlugin in m_availableWindPlugins.Values) foreach (IWindModelPlugin windPlugin in m_availableWindPlugins.Values)
{ {
m_scene.AddCommand(this, String.Format("wind base wind_plugin {0}", windPlugin.Name), String.Format("{0} - {1}", windPlugin.Name, windPlugin.Description), "", HandleConsoleBaseCommand); // m_scene.AddCommand("Regions", this, String.Format("wind base wind_plugin {0}", windPlugin.Name), String.Format("{0} - {1}", windPlugin.Name, windPlugin.Description), "", HandleConsoleBaseCommand);
m_scene.AddCommand(this, String.Format("wind base wind_update_rate"), "Change the wind update rate.", "", HandleConsoleBaseCommand); m_scene.AddCommand(
"Regions",
this,
"wind base wind_update_rate",
"wind base wind_update_rate [<value>]",
"Get or set the wind update rate.",
"",
HandleConsoleBaseCommand);
foreach (KeyValuePair<string, string> kvp in windPlugin.WindParams()) foreach (KeyValuePair<string, string> kvp in windPlugin.WindParams())
{ {
m_scene.AddCommand(this, String.Format("wind {0} {1}", windPlugin.Name, kvp.Key), String.Format("{0} : {1} - {2}", windPlugin.Name, kvp.Key, kvp.Value), "", HandleConsoleParamCommand); string windCommand = String.Format("wind {0} {1}", windPlugin.Name, kvp.Key);
m_scene.AddCommand("Regions", this, windCommand, string.Format("{0} [<value>]", windCommand), kvp.Value, "", HandleConsoleParamCommand);
} }
} }
// Register event handlers for when Avatars enter the region, and frame ticks // Register event handlers for when Avatars enter the region, and frame ticks
m_scene.EventManager.OnFrame += WindUpdate; m_scene.EventManager.OnFrame += WindUpdate;
m_scene.EventManager.OnMakeRootAgent += OnAgentEnteredRegion; m_scene.EventManager.OnMakeRootAgent += OnAgentEnteredRegion;

View File

@ -102,7 +102,7 @@ namespace OpenSim.Region.CoreModules.World.WorldMap
m_scene.RegisterModuleInterface<IWorldMapModule>(this); m_scene.RegisterModuleInterface<IWorldMapModule>(this);
m_scene.AddCommand( m_scene.AddCommand(
this, "export-map", "Regions", this, "export-map",
"export-map [<path>]", "export-map [<path>]",
"Save an image of the world map", HandleExportWorldMapConsoleCommand); "Save an image of the world map", HandleExportWorldMapConsoleCommand);

View File

@ -596,7 +596,7 @@ namespace OpenSim.Region.Framework.Scenes
#endregion Region Settings #endregion Region Settings
MainConsole.Instance.Commands.AddCommand("region", false, "reload estate", MainConsole.Instance.Commands.AddCommand("estate", false, "reload estate",
"reload estate", "reload estate",
"Reload the estate data", HandleReloadEstate); "Reload the estate data", HandleReloadEstate);

View File

@ -472,6 +472,63 @@ namespace OpenSim.Region.Framework.Scenes
/// <summary> /// <summary>
/// Call this from a region module to add a command to the OpenSim console. /// Call this from a region module to add a command to the OpenSim console.
/// </summary> /// </summary>
/// <param name="mod">
/// The use of IRegionModuleBase is a cheap trick to get a different method signature,
/// though all new modules should be using interfaces descended from IRegionModuleBase anyway.
/// </param>
/// <param name="category">
/// Category of the command. This is the section under which it will appear when the user asks for help
/// </param>
/// <param name="command"></param>
/// <param name="shorthelp"></param>
/// <param name="longhelp"></param>
/// <param name="callback"></param>
public void AddCommand(
string category, object mod, string command, string shorthelp, string longhelp, CommandDelegate callback)
{
AddCommand(category, mod, command, shorthelp, longhelp, string.Empty, callback);
}
/// <summary>
/// Call this from a region module to add a command to the OpenSim console.
/// </summary>
/// <param name="mod"></param>
/// <param name="command"></param>
/// <param name="shorthelp"></param>
/// <param name="longhelp"></param>
/// <param name="descriptivehelp"></param>
/// <param name="callback"></param>
public void AddCommand(object mod, string command, string shorthelp, string longhelp, string descriptivehelp, CommandDelegate callback)
{
string moduleName = "";
if (mod != null)
{
if (mod is IRegionModule)
{
IRegionModule module = (IRegionModule)mod;
moduleName = module.Name;
}
else if (mod is IRegionModuleBase)
{
IRegionModuleBase module = (IRegionModuleBase)mod;
moduleName = module.Name;
}
else
{
throw new Exception("AddCommand module parameter must be IRegionModule or IRegionModuleBase");
}
}
AddCommand(moduleName, mod, command, shorthelp, longhelp, descriptivehelp, callback);
}
/// <summary>
/// Call this from a region module to add a command to the OpenSim console.
/// </summary>
/// <param name="category">
/// Category of the command. This is the section under which it will appear when the user asks for help
/// </param>
/// <param name="mod"></param> /// <param name="mod"></param>
/// <param name="command"></param> /// <param name="command"></param>
/// <param name="shorthelp"></param> /// <param name="shorthelp"></param>
@ -479,12 +536,12 @@ namespace OpenSim.Region.Framework.Scenes
/// <param name="descriptivehelp"></param> /// <param name="descriptivehelp"></param>
/// <param name="callback"></param> /// <param name="callback"></param>
public void AddCommand( public void AddCommand(
object mod, string command, string shorthelp, string longhelp, string descriptivehelp, CommandDelegate callback) string category, object mod, string command,
string shorthelp, string longhelp, string descriptivehelp, CommandDelegate callback)
{ {
if (MainConsole.Instance == null) if (MainConsole.Instance == null)
return; return;
string modulename = String.Empty;
bool shared = false; bool shared = false;
if (mod != null) if (mod != null)
@ -492,20 +549,20 @@ namespace OpenSim.Region.Framework.Scenes
if (mod is IRegionModule) if (mod is IRegionModule)
{ {
IRegionModule module = (IRegionModule)mod; IRegionModule module = (IRegionModule)mod;
modulename = module.Name;
shared = module.IsSharedModule; shared = module.IsSharedModule;
} }
else if (mod is IRegionModuleBase) else if (mod is IRegionModuleBase)
{ {
IRegionModuleBase module = (IRegionModuleBase)mod;
modulename = module.Name;
shared = mod is ISharedRegionModule; shared = mod is ISharedRegionModule;
} }
else throw new Exception("AddCommand module parameter must be IRegionModule or IRegionModuleBase"); else
{
throw new Exception("AddCommand module parameter must be IRegionModule or IRegionModuleBase");
}
} }
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
modulename, shared, command, shorthelp, longhelp, descriptivehelp, callback); category, shared, command, shorthelp, longhelp, descriptivehelp, callback);
} }
public virtual ISceneObject DeserializeObject(string representation) public virtual ISceneObject DeserializeObject(string representation)

View File

@ -92,7 +92,7 @@ namespace OpenSim.Region.OptionalModules.Agent.TextureSender
m_scene = scene; m_scene = scene;
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"j2k", "Assets",
false, false,
"j2k decode", "j2k decode",
"j2k decode <ID>", "j2k decode <ID>",

View File

@ -82,19 +82,19 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
m_scenes[scene.RegionInfo.RegionID] = scene; m_scenes[scene.RegionInfo.RegionID] = scene;
scene.AddCommand( scene.AddCommand(
this, "image queues clear", "Comms", this, "image queues clear",
"image queues clear <first-name> <last-name>", "image queues clear <first-name> <last-name>",
"Clear the image queues (textures downloaded via UDP) for a particular client.", "Clear the image queues (textures downloaded via UDP) for a particular client.",
(mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd))); (mod, cmd) => MainConsole.Instance.Output(HandleImageQueuesClear(cmd)));
scene.AddCommand( scene.AddCommand(
this, "image queues show", "Comms", this, "image queues show",
"image queues show <first-name> <last-name>", "image queues show <first-name> <last-name>",
"Show the image queues (textures downloaded via UDP) for a particular client.", "Show the image queues (textures downloaded via UDP) for a particular client.",
(mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd))); (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd)));
scene.AddCommand( scene.AddCommand(
this, "show pqueues", "Comms", this, "show pqueues",
"show pqueues [full]", "show pqueues [full]",
"Show priority queue data for each client", "Show priority queue data for each client",
"Without the 'full' option, only root agents are shown." "Without the 'full' option, only root agents are shown."
@ -102,7 +102,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
(mod, cmd) => MainConsole.Instance.Output(GetPQueuesReport(cmd))); (mod, cmd) => MainConsole.Instance.Output(GetPQueuesReport(cmd)));
scene.AddCommand( scene.AddCommand(
this, "show queues", "Comms", this, "show queues",
"show queues [full]", "show queues [full]",
"Show queue data for each client", "Show queue data for each client",
"Without the 'full' option, only root agents are shown." "Without the 'full' option, only root agents are shown."
@ -110,13 +110,13 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
(mod, cmd) => MainConsole.Instance.Output(GetQueuesReport(cmd))); (mod, cmd) => MainConsole.Instance.Output(GetQueuesReport(cmd)));
scene.AddCommand( scene.AddCommand(
this, "show image queues", "Comms", this, "show image queues",
"show image queues <first-name> <last-name>", "show image queues <first-name> <last-name>",
"Show the image queues (textures downloaded via UDP) for a particular client.", "Show the image queues (textures downloaded via UDP) for a particular client.",
(mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd))); (mod, cmd) => MainConsole.Instance.Output(GetImageQueuesReport(cmd)));
scene.AddCommand( scene.AddCommand(
this, "show throttles", "Comms", this, "show throttles",
"show throttles [full]", "show throttles [full]",
"Show throttle settings for each client and for the server overall", "Show throttle settings for each client and for the server overall",
"Without the 'full' option, only root agents are shown." "Without the 'full' option, only root agents are shown."
@ -124,7 +124,7 @@ namespace OpenSim.Region.CoreModules.UDP.Linden
(mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd))); (mod, cmd) => MainConsole.Instance.Output(GetThrottlesReport(cmd)));
scene.AddCommand( scene.AddCommand(
this, "emergency-monitoring", "Comms", this, "emergency-monitoring",
"emergency-monitoring", "emergency-monitoring",
"Go on/off emergency monitoring mode", "Go on/off emergency monitoring mode",
"Go on/off emergency monitoring mode", "Go on/off emergency monitoring mode",

View File

@ -88,7 +88,7 @@ namespace OpenSim.Region.OptionalModules.Asset
m_scene = scene; m_scene = scene;
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"asset", "Assets",
false, false,
"show asset", "show asset",
"show asset <ID>", "show asset <ID>",
@ -96,7 +96,7 @@ namespace OpenSim.Region.OptionalModules.Asset
HandleShowAsset); HandleShowAsset);
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"asset", false, "dump asset", "Assets", false, "dump asset",
"dump asset <id>", "dump asset <id>",
"Dump an asset", "Dump an asset",
HandleDumpAsset); HandleDumpAsset);

View File

@ -94,13 +94,13 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
m_scenes[scene.RegionInfo.RegionID] = scene; m_scenes[scene.RegionInfo.RegionID] = scene;
scene.AddCommand( scene.AddCommand(
this, "show appearance", "Users", this, "show appearance",
"show appearance [<first-name> <last-name>]", "show appearance [<first-name> <last-name>]",
"Synonym for 'appearance show'", "Synonym for 'appearance show'",
HandleShowAppearanceCommand); HandleShowAppearanceCommand);
scene.AddCommand( scene.AddCommand(
this, "appearance show", "Users", this, "appearance show",
"appearance show [<first-name> <last-name>]", "appearance show [<first-name> <last-name>]",
"Show appearance information for each avatar in the simulator.", "Show appearance information for each avatar in the simulator.",
"This command checks whether the simulator has all the baked textures required to display an avatar to other viewers. " "This command checks whether the simulator has all the baked textures required to display an avatar to other viewers. "
@ -110,14 +110,14 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
HandleShowAppearanceCommand); HandleShowAppearanceCommand);
scene.AddCommand( scene.AddCommand(
this, "appearance send", "Users", this, "appearance send",
"appearance send [<first-name> <last-name>]", "appearance send [<first-name> <last-name>]",
"Send appearance data for each avatar in the simulator to other viewers.", "Send appearance data for each avatar in the simulator to other viewers.",
"Optionally, you can specify that only a particular avatar's appearance data is sent.", "Optionally, you can specify that only a particular avatar's appearance data is sent.",
HandleSendAppearanceCommand); HandleSendAppearanceCommand);
scene.AddCommand( scene.AddCommand(
this, "appearance rebake", "Users", this, "appearance rebake",
"appearance rebake <first-name> <last-name>", "appearance rebake <first-name> <last-name>",
"Send a request to the user's viewer for it to rebake and reupload its appearance textures.", "Send a request to the user's viewer for it to rebake and reupload its appearance textures.",
"This is currently done for all baked texture references previously received, whether the simulator can find the asset or not." "This is currently done for all baked texture references previously received, whether the simulator can find the asset or not."
@ -127,7 +127,7 @@ namespace OpenSim.Region.OptionalModules.Avatar.Appearance
HandleRebakeAppearanceCommand); HandleRebakeAppearanceCommand);
scene.AddCommand( scene.AddCommand(
this, "appearance find", "Users", this, "appearance find",
"appearance find <uuid-or-start-of-uuid>", "appearance find <uuid-or-start-of-uuid>",
"Find out which avatar uses the given asset as a baked texture, if any.", "Find out which avatar uses the given asset as a baked texture, if any.",
"You can specify just the beginning of the uuid, e.g. 2008a8d. A longer UUID must be in dashed format.", "You can specify just the beginning of the uuid, e.g. 2008a8d. A longer UUID must be in dashed format.",

View File

@ -100,22 +100,22 @@ namespace OpenSim.Region.OptionalModules.PhysicsParameters
{ {
if (!m_commandsLoaded) if (!m_commandsLoaded)
{ {
MainConsole.Instance.Commands.AddCommand("Physics", false, "physics set", MainConsole.Instance.Commands.AddCommand(
"physics set", "Regions", false, "physics set",
"Set physics parameter from currently selected region" + Environment.NewLine setInvocation,
+ "Invocation: " + setInvocation, "Set physics parameter from currently selected region",
ProcessPhysicsSet); ProcessPhysicsSet);
MainConsole.Instance.Commands.AddCommand("Physics", false, "physics get", MainConsole.Instance.Commands.AddCommand(
"physics get", "Regions", false, "physics get",
"Get physics parameter from currently selected region" + Environment.NewLine getInvocation,
+ "Invocation: " + getInvocation, "Get physics parameter from currently selected region",
ProcessPhysicsGet); ProcessPhysicsGet);
MainConsole.Instance.Commands.AddCommand("Physics", false, "physics list", MainConsole.Instance.Commands.AddCommand(
"physics list", "Regions", false, "physics list",
"List settable physics parameters" + Environment.NewLine listInvocation,
+ "Invocation: " + listInvocation, "List settable physics parameters",
ProcessPhysicsList); ProcessPhysicsList);
m_commandsLoaded = true; m_commandsLoaded = true;

View File

@ -277,22 +277,22 @@ namespace OpenSim.Region.ScriptEngine.XEngine
} }
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"scripts", false, "xengine status", "xengine status", "Show status information", "Scripts", false, "xengine status", "xengine status", "Show status information",
"Show status information on the script engine.", "Show status information on the script engine.",
HandleShowStatus); HandleShowStatus);
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"scripts", false, "scripts show", "scripts show [<script-item-uuid>]", "Show script information", "Scripts", false, "scripts show", "scripts show [<script-item-uuid>]", "Show script information",
"Show information on all scripts known to the script engine." "Show information on all scripts known to the script engine."
+ "If a <script-item-uuid> is given then only information on that script will be shown.", + "If a <script-item-uuid> is given then only information on that script will be shown.",
HandleShowScripts); HandleShowScripts);
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"scripts", false, "show scripts", "show scripts [<script-item-uuid>]", "Show script information", "Scripts", false, "show scripts", "show scripts [<script-item-uuid>]", "Show script information",
"Synonym for scripts show command", HandleShowScripts); "Synonym for scripts show command", HandleShowScripts);
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"scripts", false, "scripts suspend", "scripts suspend [<script-item-uuid>]", "Suspends all running scripts", "Scripts", false, "scripts suspend", "scripts suspend [<script-item-uuid>]", "Suspends all running scripts",
"Suspends all currently running scripts. This only suspends event delivery, it will not suspend a" "Suspends all currently running scripts. This only suspends event delivery, it will not suspend a"
+ " script that is currently processing an event.\n" + " script that is currently processing an event.\n"
+ "Suspended scripts will continue to accumulate events but won't process them.\n" + "Suspended scripts will continue to accumulate events but won't process them.\n"
@ -300,20 +300,20 @@ namespace OpenSim.Region.ScriptEngine.XEngine
(module, cmdparams) => HandleScriptsAction(cmdparams, HandleSuspendScript)); (module, cmdparams) => HandleScriptsAction(cmdparams, HandleSuspendScript));
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"scripts", false, "scripts resume", "scripts resume [<script-item-uuid>]", "Resumes all suspended scripts", "Scripts", false, "scripts resume", "scripts resume [<script-item-uuid>]", "Resumes all suspended scripts",
"Resumes all currently suspended scripts.\n" "Resumes all currently suspended scripts.\n"
+ "Resumed scripts will process all events accumulated whilst suspended." + "Resumed scripts will process all events accumulated whilst suspended."
+ "If a <script-item-uuid> is given then only that script will be resumed. Otherwise, all suitable scripts are resumed.", + "If a <script-item-uuid> is given then only that script will be resumed. Otherwise, all suitable scripts are resumed.",
(module, cmdparams) => HandleScriptsAction(cmdparams, HandleResumeScript)); (module, cmdparams) => HandleScriptsAction(cmdparams, HandleResumeScript));
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"scripts", false, "scripts stop", "scripts stop [<script-item-uuid>]", "Stops all running scripts", "Scripts", false, "scripts stop", "scripts stop [<script-item-uuid>]", "Stops all running scripts",
"Stops all running scripts." "Stops all running scripts."
+ "If a <script-item-uuid> is given then only that script will be stopped. Otherwise, all suitable scripts are stopped.", + "If a <script-item-uuid> is given then only that script will be stopped. Otherwise, all suitable scripts are stopped.",
(module, cmdparams) => HandleScriptsAction(cmdparams, HandleStopScript)); (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStopScript));
MainConsole.Instance.Commands.AddCommand( MainConsole.Instance.Commands.AddCommand(
"scripts", false, "scripts start", "scripts start [<script-item-uuid>]", "Starts all stopped scripts", "Scripts", false, "scripts start", "scripts start [<script-item-uuid>]", "Starts all stopped scripts",
"Starts all stopped scripts." "Starts all stopped scripts."
+ "If a <script-item-uuid> is given then only that script will be started. Otherwise, all suitable scripts are started.", + "If a <script-item-uuid> is given then only that script will be started. Otherwise, all suitable scripts are started.",
(module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript)); (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript));

View File

@ -236,16 +236,16 @@ namespace OpenSim.Server.Base
// Register the quit command // Register the quit command
// //
MainConsole.Instance.Commands.AddCommand("base", false, "quit", MainConsole.Instance.Commands.AddCommand("General", false, "quit",
"quit", "quit",
"Quit the application", HandleQuit); "Quit the application", HandleQuit);
MainConsole.Instance.Commands.AddCommand("base", false, "shutdown", MainConsole.Instance.Commands.AddCommand("General", false, "shutdown",
"shutdown", "shutdown",
"Quit the application", HandleQuit); "Quit the application", HandleQuit);
// Register a command to read other commands from a file // Register a command to read other commands from a file
MainConsole.Instance.Commands.AddCommand("base", false, "command-script", MainConsole.Instance.Commands.AddCommand("General", false, "command-script",
"command-script <script>", "command-script <script>",
"Run a command script from file", HandleScript); "Run a command script from file", HandleScript);

View File

@ -72,19 +72,19 @@ namespace OpenSim.Server.Handlers.Asset
server.AddStreamHandler(new AssetServerPostHandler(m_AssetService)); server.AddStreamHandler(new AssetServerPostHandler(m_AssetService));
server.AddStreamHandler(new AssetServerDeleteHandler(m_AssetService, allowDelete)); server.AddStreamHandler(new AssetServerDeleteHandler(m_AssetService, allowDelete));
MainConsole.Instance.Commands.AddCommand("kfs", false, MainConsole.Instance.Commands.AddCommand("Assets", false,
"show asset", "show asset",
"show asset <ID>", "show asset <ID>",
"Show asset information", "Show asset information",
HandleShowAsset); HandleShowAsset);
MainConsole.Instance.Commands.AddCommand("kfs", false, MainConsole.Instance.Commands.AddCommand("Assets", false,
"delete asset", "delete asset",
"delete asset <ID>", "delete asset <ID>",
"Delete asset from database", "Delete asset from database",
HandleDeleteAsset); HandleDeleteAsset);
MainConsole.Instance.Commands.AddCommand("kfs", false, MainConsole.Instance.Commands.AddCommand("Assets", false,
"dump asset", "dump asset",
"dump asset <ID>", "dump asset <ID>",
"Dump asset to a file", "Dump asset to a file",

View File

@ -84,14 +84,14 @@ namespace OpenSim.Services.GridService
if (MainConsole.Instance != null) if (MainConsole.Instance != null)
{ {
MainConsole.Instance.Commands.AddCommand("grid", true, MainConsole.Instance.Commands.AddCommand("Regions", true,
"show region", "show region",
"show region <Region name>", "show region <Region name>",
"Show details on a region", "Show details on a region",
String.Empty, String.Empty,
HandleShowRegion); HandleShowRegion);
MainConsole.Instance.Commands.AddCommand("grid", true, MainConsole.Instance.Commands.AddCommand("Regions", true,
"set region flags", "set region flags",
"set region flags <Region name> <flags>", "set region flags <Region name> <flags>",
"Set database flags for region", "Set database flags for region",

View File

@ -893,16 +893,16 @@ namespace OpenSim.Services.LLLoginService
private void RegisterCommands() private void RegisterCommands()
{ {
//MainConsole.Instance.Commands.AddCommand //MainConsole.Instance.Commands.AddCommand
MainConsole.Instance.Commands.AddCommand("loginservice", false, "login level", MainConsole.Instance.Commands.AddCommand("Users", false, "login level",
"login level <level>", "login level <level>",
"Set the minimum user level to log in", HandleLoginCommand); "Set the minimum user level to log in", HandleLoginCommand);
MainConsole.Instance.Commands.AddCommand("loginservice", false, "login reset", MainConsole.Instance.Commands.AddCommand("Users", false, "login reset",
"login reset", "login reset",
"Reset the login level to allow all users", "Reset the login level to allow all users",
HandleLoginCommand); HandleLoginCommand);
MainConsole.Instance.Commands.AddCommand("loginservice", false, "login text", MainConsole.Instance.Commands.AddCommand("Users", false, "login text",
"login text <text>", "login text <text>",
"Set the text users will see on login", HandleLoginCommand); "Set the text users will see on login", HandleLoginCommand);

View File

@ -89,17 +89,17 @@ namespace OpenSim.Services.UserAccountService
if (m_RootInstance == null && MainConsole.Instance != null) if (m_RootInstance == null && MainConsole.Instance != null)
{ {
m_RootInstance = this; m_RootInstance = this;
MainConsole.Instance.Commands.AddCommand("UserService", false, MainConsole.Instance.Commands.AddCommand("Users", false,
"create user", "create user",
"create user [<first> [<last> [<pass> [<email> [<user id>]]]]]", "create user [<first> [<last> [<pass> [<email> [<user id>]]]]]",
"Create a new user", HandleCreateUser); "Create a new user", HandleCreateUser);
MainConsole.Instance.Commands.AddCommand("UserService", false, MainConsole.Instance.Commands.AddCommand("Users", false,
"reset user password", "reset user password",
"reset user password [<first> [<last> [<password>]]]", "reset user password [<first> [<last> [<password>]]]",
"Reset a user password", HandleResetUserPassword); "Reset a user password", HandleResetUserPassword);
MainConsole.Instance.Commands.AddCommand("UserService", false, MainConsole.Instance.Commands.AddCommand("Users", false,
"set user level", "set user level",
"set user level [<first> [<last> [<level>]]]", "set user level [<first> [<last> [<level>]]]",
"Set user level. If >= 200 and 'allow_grid_gods = true' in OpenSim.ini, " "Set user level. If >= 200 and 'allow_grid_gods = true' in OpenSim.ini, "
@ -107,7 +107,7 @@ namespace OpenSim.Services.UserAccountService
+ "It will also affect the 'login level' command. ", + "It will also affect the 'login level' command. ",
HandleSetUserLevel); HandleSetUserLevel);
MainConsole.Instance.Commands.AddCommand("UserService", false, MainConsole.Instance.Commands.AddCommand("Users", false,
"show account", "show account",
"show account <first> <last>", "show account <first> <last>",
"Show account details for the given user", HandleShowAccount); "Show account details for the given user", HandleShowAccount);

View File

@ -164,6 +164,7 @@
<ReferencePath>../../../bin/</ReferencePath> <ReferencePath>../../../bin/</ReferencePath>
<Reference name="System"/> <Reference name="System"/>
<Reference name="System.Core"/>
<Reference name="System.Xml"/> <Reference name="System.Xml"/>
<Reference name="System.Web"/> <Reference name="System.Web"/>
<Reference name="log4net" path="../../../bin/"/> <Reference name="log4net" path="../../../bin/"/>