SolimusWrapper 1.0.1
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package SolimusWrapper --version 1.0.1
NuGet\Install-Package SolimusWrapper -Version 1.0.1
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="SolimusWrapper" Version="1.0.1" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SolimusWrapper" Version="1.0.1" />
<PackageReference Include="SolimusWrapper" />
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add SolimusWrapper --version 1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: SolimusWrapper, 1.0.1"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package SolimusWrapper@1.0.1
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=SolimusWrapper&version=1.0.1
#tool nuget:?package=SolimusWrapper&version=1.0.1
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
SolimusWrapper
Лёгкая и оптимизированная библиотека для работы с CLI процессами в .NET.
✨ Особенности
- 🚀 Fluent API — читаемый и удобный синтаксис
- 🔒 Immutable — потокобезопасные команды
- ⚡ Async/Await — полная асинхронность с CancellationToken
- 🔄 Pipes — перенаправление stdout, stderr, stdin
- ⏱️ Таймауты — автоматическое завершение процессов
- 🌍 Кросс-платформенность — Windows, Linux, macOS
- 📦 Zero Dependencies — никаких внешних зависимостей
- 🎯 Native AOT — поддержка trimming
📦 Установка
dotnet add package SolimusWrapper
🚀 Быстрый старт
using SolimusWrapper;
// Простой запуск
var result = await Command.Run("dotnet")
.WithArguments("--version")
.ExecuteAsync();
// Получить вывод
var output = await Command.Run("git")
.WithArguments("status")
.ExecuteAndReadOutputAsync();
📖 Примеры использования
Базовые операции
// Запуск с аргументами
await Command.Run("dotnet")
.WithArguments("build", "-c", "Release")
.ExecuteAsync();
// Получить stdout и stderr
var (stdOut, stdErr) = await Command.Run("dotnet")
.WithArguments("build")
.ExecuteAndReadAllAsync();
Вывод в реальном времени
await Command.Run("dotnet")
.WithArguments("test")
.WithStandardOutputPipe(PipeTarget.ToDelegate(Console.WriteLine))
.WithStandardErrorPipe(PipeTarget.ToDelegate(line =>
Console.WriteLine($"[ERR] {line}")))
.ExecuteAsync();
Перенаправление в файл
await Command.Run("dotnet")
.WithArguments("build", "-v", "detailed")
.WithStandardOutputPipe(PipeTarget.ToFile("build.log"))
.ExecuteAsync();
Передача данных в stdin
await Command.Run("grep")
.WithArguments("error")
.WithStandardInputPipe(PipeSource.FromString("line1\nerror here\nline3"))
.ExecuteAsync();
// Из файла
await Command.Run("cat")
.WithStandardInputPipe(PipeSource.FromFile("input.txt"))
.ExecuteAsync();
Рабочая директория и переменные окружения
await Command.Run("npm")
.WithArguments("install")
.WithWorkingDirectory("/path/to/project")
.WithEnvironmentVariable("NODE_ENV", "production")
.ExecuteAsync();
Таймауты и отмена
// Таймаут
try
{
await Command.Run("long-process")
.WithTimeout(TimeSpan.FromSeconds(30))
.ExecuteAsync();
}
catch (TimeoutException)
{
Console.WriteLine("Процесс превысил лимит времени");
}
// Отмена
using var cts = new CancellationTokenSource();
await Command.Run("task").ExecuteAsync(cts.Token);
Обработка кодов выхода
// Исключение при ошибке (по умолчанию)
try
{
await Command.Run("failing-command").ExecuteAsync();
}
catch (CommandExecutionException ex)
{
Console.WriteLine($"Exit code: {ex.ExitCode}");
}
// Без исключения
var result = await Command.Run("might-fail")
.WithValidation(false)
.ExecuteAsync();
if (!result.IsSuccess)
Console.WriteLine($"Failed with code: {result.ExitCode}");
CommandBuilder для условной логики
using SolimusWrapper.Builders;
var result = await new CommandBuilder("dotnet")
.AddArgument("publish")
.AddFlag("-v", verbose)
.AddArgumentIfNotEmpty("-c", configuration)
.AddArgumentIf(OperatingSystem.IsLinux(), "-r", "linux-x64")
.SetTimeout(TimeSpan.FromMinutes(10))
.ExecuteAsync();
Кросс-платформенные хелперы
// Shell (cmd на Windows, sh на Unix)
await CommandExtensions.Shell("echo Hello").ExecuteAsync();
// Список файлов
var files = await CommandExtensions.ListFiles().ExecuteAndReadOutputAsync();
// Ping
await CommandExtensions.Ping("google.com", 4)
.WithStandardOutputPipe(PipeTarget.ToDelegate(Console.WriteLine))
.ExecuteAsync();
📊 API Reference
Command
| Метод | Описание |
|---|---|
Run(string) |
Создаёт команду |
WithArguments(...) |
Устанавливает аргументы |
WithWorkingDirectory(string) |
Рабочая директория |
WithEnvironmentVariable(string, string?) |
Переменная окружения |
WithStandardOutputPipe(PipeTarget) |
Перенаправление stdout |
WithStandardErrorPipe(PipeTarget) |
Перенаправление stderr |
WithStandardInputPipe(PipeSource) |
Источник stdin |
WithEncoding(Encoding) |
Кодировка |
WithValidation(bool) |
Проверка exit code |
WithTimeout(TimeSpan) |
Таймаут |
ExecuteAsync() |
Выполнить команду |
ExecuteAndReadOutputAsync() |
Выполнить и получить stdout |
ExecuteAndReadAllAsync() |
Выполнить и получить stdout + stderr |
PipeTarget
| Метод | Описание |
|---|---|
Null |
Отбрасывает вывод |
ToStringBuilder(sb) |
В StringBuilder |
ToDelegate(action) |
Построчный callback |
ToStream(stream) |
В поток |
ToFile(path) |
В файл |
PipeSource
| Метод | Описание |
|---|---|
Null |
Пустой ввод |
FromString(text) |
Из строки |
FromStream(stream) |
Из потока |
FromFile(path) |
Из файла |
FromBytes(data) |
Из байтов |
CommandResult
| Свойство | Описание |
|---|---|
ExitCode |
Код выхода |
IsSuccess |
true если ExitCode == 0 |
StartTime |
Время запуска |
ExitTime |
Время завершения |
RunTime |
Длительность |
🔧 Требования
- .NET 10.0 или выше
📄 Лицензия
🔗 Ссылки
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.