コード例 #1
0
ファイル: OrchardHost.cs プロジェクト: alimohammad/Orchard2
 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;
         }
     }
 }
コード例 #2
0
        public CommandHostContext CreateContext()
        {
            var context = new CommandHostContext { RetryResult = CommandReturnCodes.Retry };

            _logger.LogInfo("Initializing Orchard session.");
            Initialize(context);
            return context;
        }
コード例 #3
0
        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;
        }
コード例 #4
0
 public void Shutdown(CommandHostContext context)
 {
     _logger.LogInfo("Shutting down Orchard session");
 }
コード例 #5
0
ファイル: OrchardHost.cs プロジェクト: adwardliu/Orchard2
 private CommandReturnCodes ExecuteSingleCommand(CommandHostContext context)
 {
     return context.CommandHost.RunCommand(_input, _output, context.Arguments.Tenant, context.Arguments.Arguments.ToArray(), context.Arguments.Switches);
 }
コード例 #6
0
ファイル: OrchardHost.cs プロジェクト: adwardliu/Orchard2
 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);
 }
コード例 #7
0
ファイル: OrchardHost.cs プロジェクト: adwardliu/Orchard2
        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;
        }
コード例 #8
0
ファイル: OrchardHost.cs プロジェクト: adwardliu/Orchard2
 private string ReadCommand(CommandHostContext context)
 {
     _output.WriteLine();
     _output.Write("orchard> ");
     return _input.ReadLine();
 }
コード例 #9
0
 public void Shutdown(CommandHostContext context)
 {
     _logger.LogInfo("Shutting down Orchard session");
 }
コード例 #10
0
ファイル: OrchardHost.cs プロジェクト: jchenga/Orchard2
 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;
         }
     }
 }
コード例 #11
0
ファイル: OrchardHost.cs プロジェクト: jchenga/Orchard2
 private async Task<CommandReturnCodes> ExecuteSingleCommandAsync(CommandHostContext context)
 {
     return await context.CommandHost.RunCommandAsync(_input, _output, context.Arguments.Tenant, context.Arguments.Arguments.ToArray(), context.Arguments.Switches);
 }
コード例 #12
0
ファイル: OrchardHost.cs プロジェクト: jchenga/Orchard2
 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);
 }
コード例 #13
0
ファイル: OrchardHost.cs プロジェクト: jchenga/Orchard2
        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;
        }
コード例 #14
0
ファイル: OrchardHost.cs プロジェクト: jchenga/Orchard2
 private async Task<string> ReadCommandAsync(CommandHostContext context)
 {
     await _output.WriteLineAsync();
     await _output.WriteAsync("orchard> ");
     return await _input.ReadLineAsync();
 }