dotnet / dotnet/command-line-api

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

Abierto
#461 4 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
C#
Estrellas
3.7k
Forks
428
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

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

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza leyendo las API de completion de System.CommandLine y los puntos de integración de dotnet-suggest. Determina cómo deberían representarse como comandos los metadatos de TaskDefinition obtenidos mediante reflexión y cómo deberían generarse las sugerencias de completion; el trabajo estará terminado cuando el comportamiento propuesto basado en metadatos y su alcance estén definidos con suficiente claridad para implementarlos.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
csharp
Área
cli
Tipo de issue
Nueva funcionalidad
Dificultad
5/5
Tiempo estimado
Más de una semana
Estado de actividad
Estancado
Claridad
Necesita aclaración
Aptitud para principiantes
25/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.