private static void Compile(string[] source, string[] args)
{
ConsoleAppender.PlatConsole.StartLine = ConsoleAppender.PlatConsole.CurrentLine + 1;
ConsoleAppender.PlatConsole.MoveCursor(ConsoleAppender.PlatConsole.StartLine);
var watch = new Stopwatch();
watch.Start();
var compiler = new Compiler(source);
var generatedAssembly = compiler.ToAssembly();
if (compiler.Errors.Any())
ListErrors(compiler.Errors.Select(x => x.Message).ToArray());
if (!compiler.Errors.Any())
{
var runable = new Runable(generatedAssembly, args);
runable.Select += OnSelectResults;
runable.Progress += OnProgress;
try
{
PrintRunning();
runable.Run();
}
catch (ThreadAbortException)
{
Log.Info("Program aborted");
}
catch (Exception e)
{
Log.Fatal("Unexpected Exception", e);
}
}
watch.Stop();
ConsoleAppender.PlatConsole.Print("");
ConsoleAppender.PlatConsole.Print(string.Format("Finished in {0} seconds", watch.Elapsed.TotalSeconds));
}