@@ -47,28 +47,26 @@ internal static Command GetCommand(PlatformID? platformID = default, Architectur
4747 /// </summary>
4848 /// <param name="arguments"></param>
4949 /// <param name="validation"></param>
50+ /// <param name="input"></param>
5051 /// <param name="silent"></param>
51- /// <param name="includeStdErr"></param>
5252 /// <param name="cancellationToken"></param>
5353 /// <returns></returns>
5454 public static async Task < ( int ExitCode , string Message ) > RunAsync (
5555 string [ ] arguments ,
5656 CommandResultValidation validation = CommandResultValidation . ZeroExitCode ,
57+ bool input = false ,
5758 bool silent = false ,
58- bool includeStdErr = true ,
5959 CancellationToken cancellationToken = default )
6060 {
61- using var stdInConsole = Console . OpenStandardInput ( ) ;
62- using var stdOutConsole = Console . OpenStandardOutput ( ) ;
63- using var stdErrConsole = Console . OpenStandardError ( ) ;
64- var stdOutBuffer = new StringBuilder ( ) ;
65- var stdErrBuffer = new StringBuilder ( ) ;
61+ using var stdInConsole = input ? Stream . Null : Console . OpenStandardInput ( ) ;
62+ using var stdOutConsole = silent ? Stream . Null : Console . OpenStandardOutput ( ) ;
63+ using var stdErrConsole = silent ? Stream . Null : Console . OpenStandardError ( ) ;
6664 var command = Command . WithArguments ( arguments )
6765 . WithValidation ( validation )
6866 . WithStandardInputPipe ( PipeSource . FromStream ( stdInConsole ) )
69- . WithStandardOutputPipe ( silent ? PipeTarget . ToStringBuilder ( stdOutBuffer ) : PipeTarget . Merge ( PipeTarget . ToStringBuilder ( stdOutBuffer ) , PipeTarget . ToStream ( stdOutConsole ) ) )
70- . WithStandardErrorPipe ( silent && ! includeStdErr ? PipeTarget . ToStringBuilder ( stdErrBuffer ) : PipeTarget . Merge ( PipeTarget . ToStringBuilder ( stdErrBuffer ) , PipeTarget . ToStream ( stdErrConsole ) ) ) ;
71- var result = await command . ExecuteAsync ( cancellationToken ) ;
72- return ( result . ExitCode , stdOutBuffer . ToString ( ) + stdErrBuffer . ToString ( ) ) ;
67+ . WithStandardOutputPipe ( PipeTarget . ToStream ( stdOutConsole ) )
68+ . WithStandardErrorPipe ( PipeTarget . ToStream ( stdErrConsole ) ) ;
69+ var result = await command . ExecuteBufferedAsync ( cancellationToken ) ;
70+ return ( result . ExitCode , result . StandardOutput . ToString ( ) + result . StandardError . ToString ( ) ) ;
7371 }
7472}
0 commit comments