/// <summary> Starts a programs and captures the output while writing to the console at the same time </summary> /// <param name="timeout">The maximum runtime of the started program</param> /// <param name="consoleOutWriter"> /// An implementation of <see cref="IConsoleOutWriter"/> that takes care of writing to the console /// <para>defaults to <see cref="ConsoleOutColorWriter"/> which writes standard error messages in red</para> /// </param> /// <returns>An object holding a list of console out lines, the exit code and whether the process completed</returns> public static ProcessResult Start(string bin, TimeSpan timeout, IConsoleOutWriter consoleOutWriter, params string[] arguments) => Start(bin, timeout, consoleOutWriter, started: null, arguments: arguments);