public IHgResult Execute(HgArguments hgArguments) { var startInfo = new ProcessStartInfo(_executableName, hgArguments.ToString()) { CreateNoWindow = true, ErrorDialog = false, RedirectStandardError = true, RedirectStandardOutput = true, UseShellExecute = false, }; using (var process = new Process { StartInfo = startInfo, }) { var errorBuilder = new StringBuilder(); var outBuilder = new StringBuilder(); process.ErrorDataReceived += (sender, e) => errorBuilder.AppendLine(e.Data); process.OutputDataReceived += (sender, e) => outBuilder.AppendLine(e.Data); process.Start(); process.BeginErrorReadLine(); process.BeginOutputReadLine(); process.WaitForExit(); return new HgResult(process.ExitCode != 0, outBuilder.ToString().Trim(), errorBuilder.ToString().Trim()); } }
public IHgResult Execute(HgArguments hgArguments) { if (hgArguments == null) { throw new ArgumentNullException("hgArguments"); } _processExecutor.ProcessOutput += HandleProcessOutput; try { var processInfo = new ProcessInfo("hg", hgArguments.ToString()); var result = _processExecutor.Execute(processInfo); return new CruiseControlHgResult(result); } finally { _processExecutor.ProcessOutput -= HandleProcessOutput; } }
private IHgResult ExecuteNonInteractive(HgArguments hgArguments, string attemptedAction, bool throwOnProcessFailure = true) { Debug.Assert(hgArguments != null); Debug.Assert(!string.IsNullOrEmpty(attemptedAction)); var result = _processExecutor.Execute(hgArguments); if (throwOnProcessFailure && result.Failed) { var message = string.Format(CultureInfo.CurrentCulture, "Error occurred while attempting to {0}.\nStandard Output:\n{1}\nStandard Error:\n{2}", attemptedAction, result.StandardOutput, result.StandardError); throw new HgSourceControlException(message); } return result; }