dotnet / dotnet/command-line-api
Support metadata based CLI: was Demo/test case: TaskRunner parsing
- 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
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