Biblioteca que automatiza el análisis de argumentos de la consola y la automatización de scripts.
El análisis de la línea de comandos es algo que generalmente se aborda de esta manera: define la sintaxis de argumentos, la analiza usando la biblioteca de analizador de línea de comandos y luego usa el parámetro en la aplicación de aplicaciones. Este enfoque necesita muchos pasos y es difícil de mantener. Esta biblioteca colapsa todos los pasos en solo uno: describa su método.
Solo necesita declarar un método en algún lugar y agregar una anotación para dejar que las cosas sean automáticas. Otro escenario interesante es la ejecución de múltiples comandos por archivo config yaml (similar al mecanismo de archivos docker).
Vea el Exampe para aprender cómo esto simplificará su aplicación de consola.
Install-Package ConsoleAuto
class Program
{
static void Main ( string [ ] args )
{
ConsoleAuto . Config ( args )
. LoadCommands ( )
. Run ( ) ;
}
[ ConsoleCommand ]
public void MyMethod ( string inputOne , int inputTwo )
{
//do stuff here
}
}Este programa será utilizable en ejecución:
Myprogram MyMethod --inputOne xxxx --inputTwo 23
Cada método anotado por ConsoleCommand está disponible para ser invocado. El método puede estar en clases en el archivo del programa, estático o no. Las clases no estáticas se crean usando DI y pueden recibir dependencias en el costructor. El comando predeterminado es el de la información que muestra información de uso (generada automáticamente a partir de definiciones de comandos)
public class IOCommands
{
public ConsoleService consoleService ;
public IOCommands ( ConsoleService consoleService )
{
this . consoleService = consoleService ;
}
[ ConsoleCommand ( isPublic : false , info : "provide this description" ) ]
public void WriteText ( string text , bool newline )
{
//do stuff here
}
} ConsoleAuto . Config ( args , servicecollection ) // pass servicecollection to use the same container of main application
. LoadCommands ( ) //Load all commands from entry assembly + base commands
. LoadCommands ( assembly ) //Load from a custom command
. LoadFromType ( typeof ( MyCommand ) ) //load a single command
. Register < MyService > ( ) // add a service di di container used in my commands
. Register < IMyService2 > ( new Service2 ( ) ) // add a service di di container used in my commands, with a custom implementation
. Default ( "MyDefaultCommand" ) //specify the default action if app starts without any command
. Configure ( config => {
//hack the config here
} )
. Run ( ) ; | Método | Nota |
|---|---|
| Configuración | Inf Service Collection es nula, crea un contenedor interno para DI |
| Comando de carga | Cargue todos los comandos desde el ensamblaje de entrada + comandos base, basándose en la anotación |
| Registro | Registre una dependencia para los comandos. Si está utilizando DI en la aplicación principal, la dependencia también se agregará en el contenedor DI principal. Si está utilizando DI y ya agregó dependencia, no necesita registrarse. |
| Configurar | Esto expone la configuración resultante. Use en su riesgo. |
| Correr | Ejecutar el programa |
| Por defecto | El comando ejecutado si no se especifica ningún comando. El valor predeterminado es el comando de información. |
| Parámetro | Nota |
|---|---|
| Nombre | El nombre del comando (se usará para lanzarlo desde la consola) |
| ISpublic | Si es cierto, es visible en la información de la consola |
| Modo | Puede estar a pedido, |
| Orden | La orden de ejecución para no bajo demanda, BeforEcommand o After Command. Las opciones On Deamand es la predeterminada y probablemente lo que suele ser Whant. Los comandos no hacen nada a menos que el usuario lo ejecute desde la línea de comandos. Después y antes del modo, ejecute el comando cada vez que ejecute un comando OnDemand. Por ejemplo, la "bienvenida" o "presenta la clave para cerrar" son el evento antes y después. |
Esta herramienta se puede usar para ejecutar un conjunto de acción. En este modo, puede definir muchos comandos atómicos y luego definir la secuencia usando un archivo externo.
El archivo de configuración myscript.yaml
Commands :
welcome_step1 :
Action : welcome
Desctiption : This is the line of text that will shown first
Args :
header : my text (first line)
welcome_step2 :
Action : welcome
Desctiption : In this example we do it twice, to prove we can execute commands multiple times with different args.
Args :
header : my text (second line)
main_step :
Action : CommandOne
Desctiption : This is a custom command that diplay the test. Yes, another dummy thing.
Args :
text : I'm the central command output!
State :
text : myglobal
MyExec.exe exec MyScript.yamlEsta biblioteca se libera bajo el plazo de la licencia MIT.
El software se proporciona "tal cual", sin garantía de ningún tipo, expresa o implícita, incluidas, entre otros, las garantías de comerciabilidad, idoneidad para un propósito particular y no infracción. En ningún caso los autores o titulares de derechos de autor serán responsables de cualquier reclamo, daños u otra responsabilidad, ya sea en una acción de contrato, agravio o de otra manera, que surge, de o en relación con el software o el uso u otros tratos en el software.
Íconos hechos por eucalyp de flaticon