public Func <int> RunConsoleModeCommand(string[] lines, bool inputIsFromUser, ConsoleCommand command, TextWriter outputWriter = null) { var injectedInputStream = new MemoryStream(); var fakeConsoleWriter = outputWriter ?? new StringWriter(); var fakeConsoleReader = new StreamReader(injectedInputStream); var consoleModeCommand = new ConsoleModeCommand( () => new ConsoleCommand[] { command }, fakeConsoleWriter, fakeConsoleReader); arrange(delegate { var injectedInput = new StreamWriter(injectedInputStream); foreach (var line in lines) { injectedInput.WriteLine(line); } injectedInput.Flush(); injectedInputStream.Seek(0, SeekOrigin.Begin); }); IConsoleRedirectionDetection redirectionDetection = A.Fake <IConsoleRedirectionDetection>(); arrange(() => consoleModeCommand.SetConsoleRedirectionDetection(redirectionDetection)); arrange(() => A.CallTo(() => redirectionDetection.IsInputRedirected()).Returns(!inputIsFromUser)); return(() => ConsoleCommandDispatcher.DispatchCommand(new ConsoleCommand[] { consoleModeCommand }, new string[0], fakeConsoleWriter)); }
public override int Run(string[] remainingArguments) { string[] args; bool isInputRedirected = _redirectionDetector.IsInputRedirected(); if (!isInputRedirected) { WritePromptForCommands(); } bool haveError = false; string input = _inputStream.ReadLine(); while (!input.Trim().Equals("x")) { if (input.Trim().Equals("?")) { ConsoleHelp.ShowSummaryOfCommands(GetNextCommands(), _outputStream); } else { args = CommandLineParser.Parse(input); var result = ConsoleCommandDispatcher.DispatchCommand(GetNextCommands(), args, _outputStream, true); if (result != 0) { haveError = true; if (isInputRedirected) { return(result); } } } if (!isInputRedirected) { _outputStream.WriteLine(); if (!isInputRedirected) { WritePromptForCommands(); } } input = _inputStream.ReadLine(); } return(haveError ? -1 : 0); }
public override int Run(string[] remainingArguments) { string[] args; bool isInputRedirected = _redirectionDetector.IsInputRedirected(); if (!isInputRedirected) { _outputStream.WriteLine(continuePrompt); } bool haveError = false; string input = _inputStream.ReadLine(); while (!input.Trim().Equals("x")) { if (input.Trim().Equals("?")) { ConsoleCommandDispatcher.DispatchCommand(_commandSource(), new string[] { }, _outputStream); } else { args = input.ToCommandLineArgs(); var result = ConsoleCommandDispatcher.DispatchCommand(_commandSource(), args, _outputStream); if (result != 0) { haveError = true; if (isInputRedirected) { return(result); } } } if (!isInputRedirected) { _outputStream.WriteLine(); _outputStream.WriteLine(continuePrompt); } input = _inputStream.ReadLine(); } return(haveError ? -1 : 0); }