Forge
csharp4405de34
1using System.Threading.Channels;
2
3namespace CascadeIDE.Services;
4
5/// <summary>
6/// Порт: запуск <c>dotnet</c> CLI в указанном рабочем каталоге.
7/// Реализация (DAL, внешний процесс): <c>CascadeIDE.Features.Build.DataAcquisition.DotnetCommandRunner</c>.
8/// </summary>
9public interface IDotnetCommandRunner
10{
11 Task<(bool Success, int ExitCode, string Output)> RunAsync(
12 IReadOnlyList<string> args,
13 string workingDirectory,
14 CancellationToken cancellationToken = default);
15
16 /// <summary>
17 /// Потоковый вывод: куски stdout/stderr (в неопределённом взаимном порядке между потоками) пишет в
18 /// <paramref name="chunkWriter"/>; по завершении процесса вызывает
19 /// <see cref="ChannelWriter{T}.TryComplete()"/> (с исключением при сбое старта/ожидания).
20 /// Писатель обычно сидит на <see cref="System.Threading.Channels.BoundedChannelOptions"/> с
21 /// <c>FullMode = Wait</c> (см. <c>BuildLogIngestion.CreateBuildLogChannel</c>, ADR 0094).
22 /// </summary>
23 Task<(bool Success, int ExitCode)> RunWithChunkWriterAsync(
24 IReadOnlyList<string> args,
25 string workingDirectory,
26 ChannelWriter<string> chunkWriter,
27 CancellationToken cancellationToken = default);
28}
29
30
View only · write via MCP/CIDE