dotnet / dotnet/command-line-api

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

Aperta
#461 4 commenti 0 reazioni 0 assegnatari Vedi su GitHub
Lingua principale
C#
Stelle
3.7k
Fork
428
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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

Guida per i contributori

Apri la guida per i contributori

Direzione di ricerca

Inizia leggendo le API di completion di System.CommandLine e i punti di integrazione di dotnet-suggest. Determina come i metadati di TaskDefinition ottenuti tramite reflection debbano essere rappresentati come comandi e come debbano essere generate le completion suggestions; il lavoro è completato quando il comportamento proposto basato sui metadati e il suo ambito sono definiti con sufficiente chiarezza per essere implementati.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
csharp
Ambito
cli
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.