dotnet / dotnet/command-line-api

Support metadata based CLI: was Demo/test case: TaskRunner parsing

オープン
#461 コメント 4 件 リアクション 0 件 担当者 0 名 GitHub で見る
主要言語
C#
スター
3.7k
フォーク
428
PR マージ指標
30日以内にマージされた PR はありません

説明

Imagine an exe called TaskRunner.dll that has a bunch of `TaskDefinition` sub-classes.

I would like to provide dotnet-suggest support for each one. To do this, I would need to load, using reflection, an instance of each `TaskDefinition` and be able to explain to `System.CommandLine` how to use this metadata to provide command line auto-completion suggestions.

```
public interface ITaskDefinition { string Key { get; } }
public abstract class TaskDefinitionBase : ITaskDefinition where T : ITask
{
public abstract string Key { get; }
}
public class CleanFullTaskDefinition : TaskDefinition
{
public override string Key => "cleanfull";
}
public class SqlExecuteTaskDefinition : TaskDefinition
{
public override string Key => "sqlcmd";
}
public class FluentMigratorTaskDefinition : TaskDefinition
{
public override string Key => "fm";
}
// etc, 1,000s of tasks to build Gilles Tréhin's Urville :)
```

コントリビューションガイド

コントリビューションガイドを開く

調査の方向性

まず、System.CommandLine の completion API と dotnet-suggest の統合ポイントを読みます。Reflection によって取得された TaskDefinition メタデータをコマンドとしてどのように表現すべきか、また補完候補をどのように生成すべきかを判断します。提案されたメタデータベースの動作とその範囲が、実装できる程度に明確に定義された時点で作業は完了です。

索引モデルが issue の本文から書いたものです。

評価

技術スタック
csharp
領域
cli
issue の種類
機能追加
難易度
5/5
見積もり時間
1週間以上
活発さ
停滞
明瞭さ
説明が足りない
初心者へのやさしさ
25/100

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。