dotnet / dotnet/command-line-api

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

Offen
#461 4 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C#
Sterne
3.7k
Forks
428
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

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 :)
```

Beitragsleitfaden

Beitragsleitfaden öffnen

Rechercherichtung

Beginne mit dem Lesen der Completion-APIs von System.CommandLine und der Integrationspunkte von dotnet-suggest. Bestimme, wie durch Reflection ermittelte TaskDefinition-Metadaten als Befehle dargestellt werden sollten und wie Vervollständigungsvorschläge generiert werden sollten; die Arbeit ist abgeschlossen, wenn das vorgeschlagene metadatenbasierte Verhalten und sein Umfang klar genug für die Implementierung definiert sind.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
csharp
Bereich
cli
Issue-Typ
Feature
Schwierigkeit
5/5
Geschätzter Aufwand
Über eine Woche
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
25/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.