「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>自作CUI(CLI)の話]]
--[[CLI開発(Sharprompt)]]
--CLI開発(System.CommandLine)

* 目次 [#v12dcaff]
#contents

* 概要 [#u60e333d]
自作CUI(CLI)を開発する際に便利なのでは?と。

https://github.com/dotnet/command-line-api/blob/main/docs/History.md

* 詳細 [#o643513e]

**機能 [#tc10c441]

***System.CommandLine [#ee6b43ac]
-コマンドライン・パーサー

--コマンド
---ルート・コマンド
---サブ・コマンド

--オプション

---スタイル~
・POSIX(-XXX)~
・Windows(/XXX)

---エイリアス~
・POSIX(-v と --verbose)~
・Windows(エイリアス無し)

--引数

---デリミタ~
・スペース~
・「:」や「=」

---arity~
引数の最小値と最大値を設定できる。

---バンドル~
・1文字のオプションはバンドル可能。~
・バンドルした場合、バンドル内の最後のオプションに引数が適用される。

--バインディング
---ハンドラ設定
---引数のバリデーション
---引数のバインディング 
---モデル・バインディング~
https://github.com/dotnet/command-line-api/blob/main/docs/model-binding.md

--Ctrl-C~
https://github.com/dotnet/command-line-api/blob/main/docs/Process-termination-handling.md

--レスポンス・ファイル~
レスポンス・ファイルを使用してコマンドを指定できる。

-その他

--ヘルプ

---ヘルプ
 > myapp -h
 > myapp /h
 > myapp --help
 > myapp -?
 > myapp /?

---解析ディレクティブ~
構文解析結果を表示する。
 > myapp [parse]
 > myapp [parse] ...(コマンド)...

---バージョン
 > myapp --version
 1.0.0

--Debugディレクティブ
 > myapp [debug] ...(コマンド)...
 ココの後、デバッガをアタッチしてデバッグ

--パイプライン
---ハンドラへのルーティングの前の~
パイプラインに呼び出しを追加できる。
---ディレクティブは、この機能を使用している。

-参考
--https://github.com/dotnet/command-line-api/blob/main/docs/Syntax-Concepts-and-Parser.md
--https://github.com/dotnet/command-line-api/blob/main/docs/Features-overview.md
--https://github.com/dotnet/command-line-api/blob/main/docs/How-To.md

***System.CommandLine.DragonFruit [#bcbeef4d]
強力に型付けされたMainメソッドを使って、~
慣習的にコマンドラインアプリを構築する。

-参考
--https://github.com/dotnet/command-line-api/blob/main/docs/DragonFruit-overview.md

***System.CommandLine.Rendering [#eb84c8f7]
-構造化された端末出力のレンダリング

-ANSIのサポート

-参考
--https://github.com/dotnet/command-line-api/blob/main/docs/Features-overview.md#adaptive-rendering

***System.CommandLine.Hosting [#v2a8d0fb]
Microsoft.Extensions.HostingでSystem.CommandLineを使用するためのサポート

***dotnet-suggest [#zd271cba]
System.CommandLineを使って作られたアプリに~
シェルの補完機能を提供するコマンドラインツール。

-参考
--https://github.com/dotnet/command-line-api/blob/main/docs/dotnet-suggest.md

**サンプル実装 [#gdc2ba57]

***System.CommandLine [#n573ea94]
-https://github.com/dotnet/command-line-api/blob/main/docs/Your-first-app-with-System-CommandLine.md

-OpenTouryoProject/OpenTouryo
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Samples/CLI_sample/Simple_CLI/Simple_CLI/Program.cs
--https://github.com/OpenTouryoProject/OpenTouryo/blob/develop/root/programs/CS/Samples4NetCore/Legacy/CLI_sample/Simple_CLI/Simple_CLI/Program.cs

***System.CommandLine.DragonFruit [#c7713f0e]
https://github.com/dotnet/command-line-api/blob/main/docs/Your-first-app-with-System-CommandLine-DragonFruit.md

***System.CommandLine.Rendering [#x27d5323]

***System.CommandLine.Hosting [#wd6021ae]
...

***dotnet-suggest [#x63fef82]
...

* 参考 [#d72eb79d]
-dotnet/command-line-api: Command line parsing, invocation, and rendering of terminal output.~
https://github.com/dotnet/command-line-api

-DragonFruit and System.CommandLine is a new way to think about .NET Console apps - Scott Hanselman's Blog~
https://www.hanselman.com/blog/dragonfruit-and-systemcommandline-is-a-new-way-to-think-about-net-console-apps

-Getting Started with System.CommandLine – .NET Development Addict~
https://dotnetdevaddict.co.za/2020/09/25/getting-started-with-system-commandline/

-Parsing the command line for your application with System.CommandLine – Bruno Sonnino~
https://blogs.msmvps.com/bsonnino/2020/04/12/parsing-the-command-line-for-your-application-with-system-commandline/

-System.CommandLine 入門 | Yucchiy's Note~
https://blog.yucchiy.com/2021/03/intro-system-commandline/

-C#でコマンドライン引数を扱う方法 - 備忘録~
https://kagasu.hatenablog.com/entry/2018/12/17/165431

-.NET での CLI 処理ライブラリについて - 鷲ノ巣~
https://tech.blog.aerie.jp/entry/2018/06/22/124630

-.NET - System.CommandLine を使用してコマンド ラインを解析する | Microsoft Docs~
https://docs.microsoft.com/ja-jp/archive/msdn-magazine/2019/march/net-parse-the-command-line-with-system-commandline

**[[OSSコンソーシアム情報>自作CUI(CLI)の話#b364b47e]] [#ddc16b43]

----
Tags: [[:シェル]], [[:インフラストラクチャ]], [[:Windows]], [[:.NET開発]]
Tags: [[:シェル]], [[:インフラストラクチャ]], [[:.NET開発]]

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS