Exemplo n.º 1
0
        public async Task Parse(Stack <string> args)
        {
            if (args.Count == 0)
            {
                args.Push("-h");
            }

            while (args.Count > 0)
            {
                string     currentArgument = args.Pop();
                IArgParser parser          = _argFactory[currentArgument];

                if (parser == null)
                {
                    StringBuilder helpBuilder = new StringBuilder()
                                                .AppendLine($"Argument '{currentArgument}' is not recognized! Try:")
                                                .AppendLine()
                                                .AppendLine("    boxer script --help");

                    throw new ArgNotFoundException(helpBuilder.ToString());
                }

                if (parser is HelpArgParser)
                {
                    parser.Parse("Boxer.Args.ScriptArgs.IScriptArg;Boxer.Args.Verbs.ScriptVerb");
                    return;
                }

                if (args.Count == 0)
                {
                    throw new ArgNotFoundException($"Parameter for argument '{currentArgument}' not found!{Environment.NewLine}");
                }

                _scripts.AddRange(parser.Parse(args.Pop()));
            }

            await _sandboxHandler.HandleAsync(new SandboxRequest(_scripts));
        }
Exemplo n.º 2
0
        public async Task Parse(Stack <string> args)
        {
            while (args.Count > 0)
            {
                string     currentArgument = args.Pop();
                IArgParser parser          = _argFactory[currentArgument];

                if (parser == null)
                {
                    throw new ArgumentException("Unrecognized argument!", currentArgument);
                }

                if (parser is HelpArgParser)
                {
                    parser.Parse("Boxer.Args.ScriptArgs.IScriptArg;Boxer.Args.Verbs.ScriptVerb");
                    return;
                }

                _scripts.AddRange(parser.Parse(args.Pop()));
            }

            await _sandboxHandler.HandleAsync(new SandboxRequest(_scripts));
        }
Exemplo n.º 3
0
        /// <inheritdoc />
        public void Run(params string[] args)
        {
            _console.WriteLine($"{AppName} {AppVersion}");

            if (args.Length < 1)
            {
                OutputModuleList();
                return;
            }

            var module = _modules.FirstOrDefault(m => InvariantStringMatch(args[0], m.Name));

            if (module == null)
            {
                OutputModuleList();
                return;
            }

            if (args.Length < 2)
            {
                OutputCommandList(module);
                return;
            }

            var command = module.Commands.FirstOrDefault(c => InvariantStringMatch(args[1], c.Name));

            if (command == null)
            {
                OutputCommandList(module);
                return;
            }

            var cmd = _argParser.Parse(args.Skip(2));

            _loggerConfigurationSource.VerbosityLevel = cmd.LogLevel;
            _console.WriteLine($"Using {cmd.LogLevel} log level.");

            if (!cmd.Options.Any() && !cmd.InputFiles.Any())
            {
                OutputParameterList(module, command);
                return;
            }

            _console.WriteLine($"Executing {module.Name} {command.Name}.");
            var task = command.TaskFactory(cmd);

            _appProgressTracker.Add(task);
            try
            {
                task.Run();
            }
            catch (Exception e)
            {
                _appProgressTracker.Fail(task, e);
                throw;
            }
            finally
            {
                _appProgressTracker.Remove(task);
            }
            _console.WriteLine($"Task complete.");
        }