Skip to content
This repository was archived by the owner on Dec 17, 2025. It is now read-only.

Commit a091323

Browse files
authored
fix: improve input and output handling in Cilium command execution (#10)
Signed-off-by: Nikolai Emil Damm <nikolaiemildamm@icloud.com>
1 parent 7e45016 commit a091323

File tree

1 file changed

+9
-11
lines changed

1 file changed

+9
-11
lines changed

src/Devantler.CiliumCLI/Cilium.cs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)