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)); }
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)); }
/// <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."); }