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;
}