From 8ee078c86b10eb5a8d87073e62f675379ab84083 Mon Sep 17 00:00:00 2001
From: Justin Clark-Casey (justincc)
Date: Wed, 9 Jan 2013 00:01:48 +0000
Subject: minor: Allow "script *" console commands to take multiple script item
 ids

---
 OpenSim/Region/ScriptEngine/XEngine/XEngine.cs | 62 +++++++++++++-------------
 1 file changed, 32 insertions(+), 30 deletions(-)

(limited to 'OpenSim/Region')

diff --git a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
index 79cec04..ba63bb6 100644
--- a/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
+++ b/OpenSim/Region/ScriptEngine/XEngine/XEngine.cs
@@ -324,40 +324,40 @@ namespace OpenSim.Region.ScriptEngine.XEngine
                 HandleShowStatus);
 
             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.\n"
-                    + "If a <script-item-uuid> is given then only information on that script will be shown.",
+                    + "If one or more <script-item-uuid>s are given then only information on that script will be shown.",
                 HandleShowScripts);
 
             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);
 
             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"
                     + " script that is currently processing an event.\n"
                     + "Suspended scripts will continue to accumulate events but won't process them.\n"
-                    + "If a <script-item-uuid> is given then only that script will be suspended.  Otherwise, all suitable scripts are suspended.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be suspended.  Otherwise, all suitable scripts are suspended.",
                  (module, cmdparams) => HandleScriptsAction(cmdparams, HandleSuspendScript));
 
             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"
                     + "Resumed scripts will process all events accumulated whilst suspended.\n"
-                    + "If a <script-item-uuid> is given then only that script will be resumed.  Otherwise, all suitable scripts are resumed.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be resumed.  Otherwise, all suitable scripts are resumed.",
                 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleResumeScript));
 
             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.\n"
-                    + "If a <script-item-uuid> is given then only that script will be stopped.  Otherwise, all suitable scripts are stopped.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be stopped.  Otherwise, all suitable scripts are stopped.",
                 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStopScript));
 
             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.\n"
-                    + "If a <script-item-uuid> is given then only that script will be started.  Otherwise, all suitable scripts are started.",
+                    + "If one or more <script-item-uuid>s are given then only that script will be started.  Otherwise, all suitable scripts are started.",
                 (module, cmdparams) => HandleScriptsAction(cmdparams, HandleStartScript));
 
             MainConsole.Instance.Commands.AddCommand(
@@ -478,29 +478,31 @@ namespace OpenSim.Region.ScriptEngine.XEngine
                     return;
                 }
     
-                rawItemId = cmdparams[2];
-    
-                if (!UUID.TryParse(rawItemId, out itemId))
+                for (int i = 2; i < cmdparams.Length; i++)
                 {
-                    MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid UUID", rawItemId);
-                    return;
-                }
-    
-                if (itemId != UUID.Zero)
-                {
-                    IScriptInstance instance = GetInstance(itemId);
-                    if (instance == null)
+                    rawItemId = cmdparams[i];
+        
+                    if (!UUID.TryParse(rawItemId, out itemId))
                     {
-                        // Commented out for now since this will cause false reports on simulators with more than
-                        // one scene where the current command line set region is 'root' (which causes commands to
-                        // go to both regions... (sigh)
-//                        MainConsole.Instance.OutputFormat("Error - No item found with id {0}", itemId);
-                        return;
+                        MainConsole.Instance.OutputFormat("ERROR: {0} is not a valid UUID", rawItemId);
+                        continue;
                     }
-                    else
+        
+                    if (itemId != UUID.Zero)
                     {
-                        action(instance);
-                        return;
+                        IScriptInstance instance = GetInstance(itemId);
+                        if (instance == null)
+                        {
+                            // Commented out for now since this will cause false reports on simulators with more than
+                            // one scene where the current command line set region is 'root' (which causes commands to
+                            // go to both regions... (sigh)
+    //                        MainConsole.Instance.OutputFormat("Error - No item found with id {0}", itemId);
+                            continue;
+                        }
+                        else
+                        {
+                            action(instance);
+                        }
                     }
                 }
             }
-- 
cgit v1.1