public CommandReturnCodes ExecuteInteractive(CommandHostContext context) { _output.WriteLine("Type \"?\" for help, \"exit\" to exit, \"cls\" to clear screen"); while (true) { var command = ReadCommand(context); switch (command.ToLowerInvariant()) { case "quit": case "q": case "exit": case "e": return 0; case "help": case "?": DisplayInteractiveHelp(); break; case "cls": //System.Console.Clear(); break; default: context = RunCommand(context, command); break; } } }
public CommandHostContext CreateContext() { var context = new CommandHostContext { RetryResult = CommandReturnCodes.Retry }; _logger.LogInfo("Initializing Orchard session."); Initialize(context); return context; }
private void Initialize(CommandHostContext context) { context.Arguments = new OrchardParametersParser().Parse(new CommandParametersParser().Parse(_args)); context.CommandHost = new CommandHostAgent( _serviceProvider.GetService<IOrchardHost>(), _serviceProvider.GetService<IShellSettingsManager>() ); // Perform some argument validation and display usage if something is incorrect context.DisplayUsageHelp = context.Arguments.Switches.ContainsKey("?"); if (context.DisplayUsageHelp) return; context.DisplayUsageHelp = (context.Arguments.Arguments.Any() && context.Arguments.ResponseFiles.Any()); if (context.DisplayUsageHelp) { _logger.LogError("Incorrect syntax: Response files cannot be used in conjunction with commands"); return; } context.StartSessionResult = CommandReturnCodes.Ok; }
public void Shutdown(CommandHostContext context) { _logger.LogInfo("Shutting down Orchard session"); }
private CommandReturnCodes ExecuteSingleCommand(CommandHostContext context) { return context.CommandHost.RunCommand(_input, _output, context.Arguments.Tenant, context.Arguments.Arguments.ToArray(), context.Arguments.Switches); }
private CommandReturnCodes RunCommandInSession(CommandHostContext context, string command) { var args = new OrchardParametersParser().Parse(new CommandParametersParser().Parse(new CommandLineParser().Parse(command))); return context.CommandHost.RunCommand(_input, _output, args.Tenant, args.Arguments.ToArray(), args.Switches); }
private CommandHostContext RunCommand(CommandHostContext context, string command) { if (string.IsNullOrWhiteSpace(command)) return context; CommandReturnCodes result = RunCommandInSession(context, command); if (result == context.RetryResult) { _commandHostContextProvider.Shutdown(context); context = CommandHostContext(); result = RunCommandInSession(context, command); if (result != CommandReturnCodes.Ok) _output.WriteLine("Command returned non-zero result: {0}", result); } return context; }
private string ReadCommand(CommandHostContext context) { _output.WriteLine(); _output.Write("orchard> "); return _input.ReadLine(); }
public async Task<CommandReturnCodes> ExecuteInteractiveAsync(CommandHostContext context) { await _output.WriteLineAsync("Type \"?\" for help, \"exit\" to exit, \"cls\" to clear screen"); while (true) { var command = await ReadCommandAsync(context); switch (command?.ToLowerInvariant()) { case "quit": case "q": case "exit": case "e": return 0; case "help": case "?": await DisplayInteractiveHelpAsync(); break; case "cls": System.Console.Clear(); break; default: context = await RunCommandAsync(context, command); break; } } }
private async Task<CommandReturnCodes> ExecuteSingleCommandAsync(CommandHostContext context) { return await context.CommandHost.RunCommandAsync(_input, _output, context.Arguments.Tenant, context.Arguments.Arguments.ToArray(), context.Arguments.Switches); }
private async Task<CommandReturnCodes> RunCommandInSessionAsync(CommandHostContext context, string command) { var args = new OrchardParametersParser().Parse(new CommandParametersParser().Parse(new CommandParser().Parse(command))); return await context.CommandHost.RunCommandAsync(_input, _output, args.Tenant, args.Arguments.ToArray(), args.Switches); }
private async Task<CommandHostContext> RunCommandAsync(CommandHostContext context, string command) { if (string.IsNullOrWhiteSpace(command)) { return context; } CommandReturnCodes result = await RunCommandInSessionAsync(context, command); if (result == context.RetryResult) { _commandHostContextProvider.Shutdown(context); context = CommandHostContext(); result = await RunCommandInSessionAsync(context, command); if (result != CommandReturnCodes.Ok) { await _output.WriteLineAsync($"Command returned non-zero result: {result}"); } } return context; }
private async Task<string> ReadCommandAsync(CommandHostContext context) { await _output.WriteLineAsync(); await _output.WriteAsync("orchard> "); return await _input.ReadLineAsync(); }