public static void NuMain(StringBuilder b, string path, Func <ICommandManager, ICommand> commandBuilder)
{
var lastOut = Console.Out;
var fileSystem = new PhysicalFileSystem(path ?? Directory.GetCurrentDirectory());
try
{
Console.SetOut(new ConsoleWriter(b));
RemoveOldFile(fileSystem);
var program = new NuProgram();
_initializeMethod.Invoke(program, new[] { fileSystem });
HttpClient.DefaultCredentialProvider = new ConsoleCredentialProvider();
foreach (var command2 in program.Commands)
{
program.Manager.RegisterCommand(command2);
}
var command = commandBuilder(program.Manager);
if (!NuProgram.ArgumentCountValid(command))
{
var commandName = command.CommandAttribute.CommandName;
Console.WriteLine("InvalidArguments", commandName);
program.HelpCommand.ViewHelpForCommand(commandName);
}
else
{
command.Execute();
}
}
finally { Console.SetOut(lastOut); }
}