private void Set(ArchBenchParser.CommandContext aContext)
        {
            if (aContext.ChildCount < 6)
            {
                Console.WriteLine("with ( <id> |<name> ) set <property>=<value>");
            }

            var ident    = aContext.GetChild(1).GetChild(0) as ITerminalNode;
            var property = aContext.GetChild(3) as ITerminalNode;
            var value    = aContext.GetChild(5).GetChild(0) as ITerminalNode;

            IArchBenchPlugIn plugin;

            if (int.TryParse(ident?.Symbol.Text, out var id))
            {
                plugin = Server.Manager.Get(id - 1);
            }
            else
            {
                var name = ident?.Symbol.Text.Trim('\'');
                plugin = Server.Manager.Find(name);
            }

            if (plugin.Settings.Contains(property?.Symbol.Text))
            {
                plugin.Settings[property?.Symbol.Text] = value?.Symbol.Text;
            }
        }
        public override bool VisitCommand(ArchBenchParser.CommandContext aContext)
        {
            if (aContext.ChildCount < 1)
            {
                return(false);
            }

            switch (aContext.GetChild(0).GetText())
            {
            case "help":
                Help();
                break;

            case "start":
                Start(aContext.GetChild(1));
                break;

            case "stop":
                Stop();
                break;

            case "install":
                Install(aContext.GetChild(1));
                break;

            case "with":
                Set(aContext);
                break;

            case "show":
                Show(aContext);
                break;

            case "enable":
                Enable(aContext, true);
                break;

            case "disable":
                Enable(aContext, false);
                break;

            case "exit":
                return(Exit());

            default:
                //Console.WriteLine($"Unknown Command: '{ command }'");
                return(true);
            }

            return(true);
        }
 private void Enable(ArchBenchParser.CommandContext aContext, bool aEnabled)
 {
     if (aContext.ChildCount < 2)
     {
         Console.WriteLine("usage: enable ( <id> | <name> )");
     }
     else
     {
         var child = aContext.GetChild(1) as ITerminalNode;
         if (int.TryParse(child?.Symbol.Text, out var id))
         {
             Server.Enable(Server.Manager.Get(id - 1), aEnabled);
         }
         else
         {
             var name = child?.Symbol.Text.Trim('\'');
             Server.Enable(Server.Manager.Find(name), aEnabled);
         }
     }
 }
        private void Show(ArchBenchParser.CommandContext aContext)
        {
            //VisitChildren( aContext );

            var context = aContext.GetChild(1) as ArchBenchParser.IdentifierOptContext;

            if (context == null)
            {
                return;
            }

            if (context.ChildCount == 0)
            {
                foreach (var plugin in Server.Manager.PlugIns)
                {
                    var index = Server.Manager.IndexOf(plugin);
                    Console.WriteLine($"[{ index }] :\t{ plugin.Name } ({ GetStatus(plugin)})");
                }
            }
            else
            {
                if (context.GetChild(0)?.GetChild(0) is ITerminalNode child)
                {
                    var symbol = child?.Symbol.Text;
                    if (int.TryParse(symbol, out var id))
                    {
                        Show(Server.Manager.Get(id - 1));
                    }
                    else
                    {
                        symbol = symbol.Trim('\'');
                        Show(Server.Manager.Find(symbol));
                    }
                }
            }
        }
 /// <summary>
 /// Exit a parse tree produced by <see cref="ArchBenchParser.command"/>.
 /// <para>The default implementation does nothing.</para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 public virtual void ExitCommand([NotNull] ArchBenchParser.CommandContext context)
 {
 }
 /// <summary>
 /// Visit a parse tree produced by <see cref="ArchBenchParser.command"/>.
 /// <para>
 /// The default implementation returns the result of calling <see cref="AbstractParseTreeVisitor{Result}.VisitChildren(IRuleNode)"/>
 /// on <paramref name="context"/>.
 /// </para>
 /// </summary>
 /// <param name="context">The parse tree.</param>
 /// <return>The visitor result.</return>
 public virtual Result VisitCommand([NotNull] ArchBenchParser.CommandContext context)
 {
     return(VisitChildren(context));
 }