public static BuildResult BuildProject(DubProject prj, IProgressMonitor mon, ConfigurationSelector sel) { var br = new BuildResult(); // Skip building sourceLibraries string targetType = null; var cfg = prj.GetConfiguration (sel) as DubProjectConfiguration; if (cfg != null){ cfg.BuildSettings.TryGetTargetTypeProperty (prj, sel, ref targetType); if(string.IsNullOrWhiteSpace(targetType)) prj.CommonBuildSettings.TryGetTargetTypeProperty (prj, sel, ref targetType); if (targetType != null && targetType.ToLower ().Contains("sourcelibrary")) { br.BuildCount = 1; return br; } } var args = new StringBuilder("build"); BuildCommonArgAppendix(args, prj, sel); string output; string errDump; int status = ProjectBuilder.ExecuteCommand(DubSettings.Instance.DubCommand, args.ToString(), prj.BaseDirectory, mon, out errDump, out output); br.CompilerOutput = output; ErrorExtracting.HandleReturnCode (mon, br, status); ErrorExtracting.HandleCompilerOutput(prj, br, output); ErrorExtracting.HandleCompilerOutput(prj, br, errDump); return br; }
internal static void ExecuteProject(DubProject prj, IProgressMonitor monitor, ExecutionContext context, ConfigurationSelector configuration) { bool isDebug = context.ExecutionHandler.GetType().Name.StartsWith("Debug"); var conf = prj.GetConfiguration(configuration) as DubProjectConfiguration; IConsole console; if (conf.ExternalConsole) { console = context.ExternalConsoleFactory.CreateConsole(!conf.PauseConsoleOutput); } else { console = context.ConsoleFactory.CreateConsole(true); } var operationMonitor = new AggregatedOperationMonitor(monitor); var sr = new StringBuilder(); if (!isDebug) { sr.Append("run"); BuildCommonArgAppendix(sr, prj, configuration); } try { var cmd = isDebug ? prj.CreateExecutionCommand(configuration) : new NativeExecutionCommand(DubSettings.Instance.DubCommand, sr.ToString(), prj.BaseDirectory.ToString()); if (!context.ExecutionHandler.CanExecute(cmd)) { monitor.ReportError("Cannot execute \"" + cmd.Command + " " + cmd.Arguments + "\". The selected execution mode is not supported for Dub projects.", null); return; } var op = context.ExecutionHandler.Execute(cmd, console); operationMonitor.AddOperation(op); op.WaitForCompleted(); if (op.ExitCode != 0) { monitor.ReportError(cmd.Command + " exited with code: " + op.ExitCode.ToString(), null); } else { monitor.Log.WriteLine(cmd.Command + " exited with code: {0}", op.ExitCode); } } catch (Exception ex) { monitor.ReportError("Cannot execute \"" + sr.ToString() + "\"", ex); } finally { operationMonitor.Dispose(); console.Dispose(); } }
public static void ExecuteProject(DubProject prj,IProgressMonitor monitor, ExecutionContext context, ConfigurationSelector configuration, string dubVerb = "run") { bool isDebug = context.ExecutionHandler.GetType ().Name.StartsWith ("Debug"); var conf = prj.GetConfiguration(configuration) as DubProjectConfiguration; IConsole console; if (conf.ExternalConsole) console = context.ExternalConsoleFactory.CreateConsole(!conf.PauseConsoleOutput); else console = context.ConsoleFactory.CreateConsole(true); var operationMonitor = new AggregatedOperationMonitor(monitor); var sr = new StringBuilder(); if (!isDebug) { sr.Append (dubVerb); BuildCommonArgAppendix (sr, prj, configuration); } try { var cmd = isDebug ? prj.CreateExecutionCommand(configuration) : new NativeExecutionCommand(DubSettings.Instance.DubCommand, sr.ToString(), prj.BaseDirectory.ToString()); if (!context.ExecutionHandler.CanExecute(cmd)) { monitor.ReportError("Cannot execute \"" + cmd.Command + " " + cmd.Arguments + "\". The selected execution mode is not supported for Dub projects.", null); return; } var op = context.ExecutionHandler.Execute(cmd, console); operationMonitor.AddOperation(op); op.WaitForCompleted(); if(op.ExitCode != 0) monitor.ReportError(cmd.Command+" exited with code: "+op.ExitCode.ToString(), null); else monitor.Log.WriteLine(cmd.Command+" exited with code: {0}", op.ExitCode); } catch (Exception ex) { monitor.ReportError("Cannot execute \"" + sr.ToString() + "\"", ex); } finally { operationMonitor.Dispose(); console.Dispose(); } }
internal static void ExecuteProject(DubProject prj, IProgressMonitor monitor, ExecutionContext context, ConfigurationSelector configuration) { var conf = prj.GetConfiguration(configuration) as DubProjectConfiguration; IConsole console; if (conf.ExternalConsole) { console = context.ExternalConsoleFactory.CreateConsole(!conf.PauseConsoleOutput); } else { console = context.ConsoleFactory.CreateConsole(true); } var operationMonitor = new AggregatedOperationMonitor(monitor); var sr = new StringBuilder("run"); Instance.BuildCommonArgAppendix(sr, prj, configuration); try { var cmd = new NativeExecutionCommand(Instance.DubExecutable, sr.ToString(), prj.BaseDirectory.ToString()); if (!context.ExecutionHandler.CanExecute(cmd)) { monitor.ReportError("Cannot execute \"" + "\". The selected execution mode is not supported for Dub projects.", null); return; } var op = context.ExecutionHandler.Execute(cmd, console); operationMonitor.AddOperation(op); op.WaitForCompleted(); monitor.Log.WriteLine(Instance.DubExecutable + " exited with code: {0}", op.ExitCode); } catch (Exception ex) { monitor.ReportError("Cannot execute \"" + sr.ToString() + "\"", ex); } finally { operationMonitor.Dispose(); console.Dispose(); } }
internal static void ExecuteProject(DubProject prj,IProgressMonitor monitor, ExecutionContext context, ConfigurationSelector configuration) { var conf = prj.GetConfiguration(configuration) as DubProjectConfiguration; IConsole console; if (conf.ExternalConsole) console = context.ExternalConsoleFactory.CreateConsole(!conf.PauseConsoleOutput); else console = context.ConsoleFactory.CreateConsole(true); var operationMonitor = new AggregatedOperationMonitor(monitor); var sr = new StringBuilder("run"); Instance.BuildCommonArgAppendix(sr, prj, configuration); try { var cmd = new NativeExecutionCommand(Instance.DubExecutable, sr.ToString(), prj.BaseDirectory.ToString()); if (!context.ExecutionHandler.CanExecute(cmd)) { monitor.ReportError("Cannot execute \"" + "\". The selected execution mode is not supported for Dub projects.", null); return; } var op = context.ExecutionHandler.Execute(cmd, console); operationMonitor.AddOperation(op); op.WaitForCompleted(); monitor.Log.WriteLine(Instance.DubExecutable+" exited with code: {0}", op.ExitCode); } catch (Exception ex) { monitor.ReportError("Cannot execute \"" + sr.ToString() + "\"", ex); } finally { operationMonitor.Dispose(); console.Dispose(); } }
public static BuildResult BuildProject(DubProject prj, IProgressMonitor mon, ConfigurationSelector sel) { var br = new BuildResult(); // Skip building sourceLibraries string targetType = null; var cfg = prj.GetConfiguration(sel) as DubProjectConfiguration; if (cfg != null) { cfg.BuildSettings.TryGetTargetTypeProperty(prj, sel, ref targetType); if (string.IsNullOrWhiteSpace(targetType)) { prj.CommonBuildSettings.TryGetTargetTypeProperty(prj, sel, ref targetType); } if (targetType != null && targetType.ToLower().Contains("sourcelibrary")) { br.BuildCount = 1; return(br); } } var args = new StringBuilder("build"); BuildCommonArgAppendix(args, prj, sel); string output; string errDump; int status = ProjectBuilder.ExecuteCommand(DubSettings.Instance.DubCommand, args.ToString(), prj.BaseDirectory, mon, out errDump, out output); br.CompilerOutput = output; ErrorExtracting.HandleReturnCode(mon, br, status); ErrorExtracting.HandleCompilerOutput(prj, br, output); ErrorExtracting.HandleCompilerOutput(prj, br, errDump); return(br); }