static int Main(string[] args) { try{ if (null != args && 0 != args.Length){ var wdir = Array.IndexOf(args, "--workdir"); if (-1 != wdir){ Environment.CurrentDirectory = Path.GetFullPath(args[wdir + 1]); } } var builder = new BSharpBuilder(); var adict = new ConsoleArgumentHelper().ParseDictionary(args); if (adict.ContainsKey("debug")){ Debugger.Launch(); } var log = SetupLog(adict); var project = SetupProject(adict, log, builder); builder.Log = log; builder.Initialize(project); var resultContext = builder.Build(); WriteOutErrors(resultContext, log); return 0; } catch (Exception ex){ Console.Error.WriteLine(ex.ToString()); return -1; } }
private static IBSharpProject DoBuild(IDictionary <string, string> adict, IUserLog log, BSharpBuilder builder, bool errorsafe = false) { var project = SetupProject(adict, log, builder); project.NoOutput = ConsoleMode; try { builder.Log = log; builder.Initialize(project); var resultContext = builder.Build(); if (ConsoleMode) { WriteOutConsoleMode(resultContext); } else { WriteOutErrors(resultContext, log); } } catch (Exception e) { if (errorsafe) { project.Log.Error("Error in cycle " + e, e); return(project); } throw; } return(project); }