Repolode
Tyrrrz

Tyrrrz/CliWrap

.NETからコマンドラインプロセスを起動するライブラリ。柔軟な設定、stdin/stdout/stderrのパイプ接続、非同期キャンセルに対応。

スター
5,010
フォーク
285
未解決の Issue
3
最終コミット
昨日

これは何?

CliWrapは、System.Diagnostics.Processをラップし、コマンドラインツールを実行するためのfluentで不変なAPIを提供する.NETライブラリです。実行ファイルのパスを指定してCli.Wrapを呼び出し、引数、作業ディレクトリ、環境変数などを設定してから、ExecuteAsyncやより高レベルな実行メソッドを呼び出してコマンドを実行します。

標準入力・標準出力・標準エラーは、ファイル、ストリーム、バイト配列、文字列、StringBuilderバッファ、デリゲート、ほかのコマンドに接続できます。また、パイプ演算子でコマンドを連結することも可能です。ヘルパーメソッドで出力をバッファリングして取得できるほか、プロセスをpull型またはpush型のイベントストリームとして扱い、出力にリアルタイムで反応できます。

強制終了と正常終了を促す割り込みシグナルの両方によるキャンセルに対応しています。既定では終了コードが0以外の場合に例外をスローします。外部依存関係はなく、.NET Standard 2.0、.NET Core 3.0以降、.NET Framework 4.6.2以降を対象としています。

主な機能

  • 01引数、作業ディレクトリ、環境変数を指定できる、fluentで不変なコマンド設定。
  • 02stdin、stdout、stderrをファイル、ストリーム、文字列、デリゲート、ほかのコマンドに柔軟にパイプ接続。
  • 03バッファリング実行に加え、出力処理に使えるpull型またはpush型のイベントストリーム。
  • 04強制終了と正常終了を促すキャンセルに対応した非同期API。
  • 05既定では終了コードが0以外の場合に例外をスロー。無効化可能な検証機能も備えています。
  • 06外部依存関係なし。

ユースケース

  • .NETアプリケーションからgit、ffmpeg、dockerなどの外部ツールを呼び出す。
  • プロセスの出力をリアルタイムでログやUIにストリーミングする。
  • パイプで入出力をつなぎ、コマンドラインツールを連結する。
  • タイムアウトや正常なシャットダウンに対応しながら、長時間実行されるプロセスを起動する。

クイックスタート

  1. 1

    CliWrap NuGet パッケージをインストールする

    dotnet add package CliWrap
  2. 2

    名前空間をインポートし、C# コードで実行ファイルのパスを指定して Cli.Wrap(...) を呼び出し、その後 ExecuteAsync() を実行する

使う前に知っておきたいこと

  • プロジェクトまたはそのソースコードを使用する前に、README に記載されたロシアとウクライナに関する政治的な利用規約への同意が必要です。
  • リソースポリシーのオプションは、プラットフォームによってサポート状況が異なります。
  • ユーザー名以外の認証情報オプションは、Windows でのみ利用できます。

収録されている特集

トピック

#dotnet#csharp#cli#process#piping#async#cancellation#command-line#dotnet-core#dotnet-standard

よくある質問

CliWrap とは?
.NETからコマンドラインプロセスを起動するライブラリ。柔軟な設定、stdin/stdout/stderrのパイプ接続、非同期キャンセルに対応。 CliWrapは、System.Diagnostics.Processをラップし、コマンドラインツールを実行するためのfluentで不変なAPIを提供する.NETライブラリです。実行ファイルのパスを指定してCli.Wrapを呼び出し、引数、作業ディレクトリ、環境変数などを設定してから、ExecuteAsyncやより高レベルな実行メソッドを呼び出してコマンドを実行します。
CliWrap は無料で使えますか?ライセンスは?
CliWrap は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
CliWrap は今もメンテナンスされていますか?
活発にメンテナンス中。CliWrap の最終コミットは 2026年11月4日 です。
CliWrap は何に使えますか?
.NETアプリケーションからgit、ffmpeg、dockerなどの外部ツールを呼び出す。 プロセスの出力をリアルタイムでログやUIにストリーミングする。 パイプで入出力をつなぎ、コマンドラインツールを連結する。 タイムアウトや正常なシャットダウンに対応しながら、長時間実行されるプロセスを起動する。
CliWrap のインストール方法は?
CliWrap NuGet パッケージをインストールする: dotnet add package CliWrap 名前空間をインポートし、C# コードで実行ファイルのパスを指定して Cli.Wrap(...) を呼び出し、その後 ExecuteAsync() を実行する
CliWrap はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/Tyrrrz/CliWrap

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト