Biblioteca que automatiza o argumento do console Analisando e automação de scripts.
A análise da linha de comando é algo que geralmente é abordado dessa maneira: você define a sintaxe do argumento, analisa -a usando a biblioteca do analisador de linha de comando e usa o parâmetro na aplicação. Essa abordagem precisa de muitas etapas e é difícil de mantain. Esta biblioteca entra em colapso de todas as etapas em apenas uma: descreva seu método.
Você só precisa declarar um método em algum lugar e adicionar uma anotação para que as coisas sejam automáticas. Outro cenário interessante é a execução de vários comandos pelo arquivo YAML Config (semelhante ao mecanismo de arquivos do docker).
Consulte o Exampe para saber como isso simplificará seu aplicativo de console.
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á utilizável em execução:
Myprogram MyMethod --inputOne xxxx --inputTwo 23
Cada método anotado pela Consolecommand está disponível para ser invocado. O método pode ser em classes ouside o arquivo do programa, estático ou não. Classes não estáticas são criadas usando DI e podem receber dependências no costrutor. O comando padrão é a informação, que mostra informações de uso (geradas automaticamente a partir de definições de comando)
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 | Observação |
|---|---|
| Config | A coleção de serviços inf é nula, cria um contêiner interno para DI |
| LoadCommand | Carregue todos os comandos do Assembly de entrada + comandos de base, baseando -se na anotação |
| Registrar | Registre uma dependência para comandos. Se você estiver usando DI no aplicativo principal, a dependência também será adicionada no contêiner DI principal. Se você estiver usando DI e já adicionou dependência, não precisa se registrar. |
| Configure | Isso expõe a configuração resultante. Use por seu risco. |
| Correr | Execute o programa |
| Padrão | o comando executado se nenhum comando for especificado. O valor padrão é o comando info. |
| Parâmetro | Observação |
|---|---|
| Nome | O nome do comando (será usado para lançá -lo no console) |
| Ispublic | Se verdadeiro, é visível nas informações do console |
| Modo | Pode estar sob demanda, |
| Ordem | A ordem de execução para não sob demanda, compensar ou depois comando. As opções On Deamand são a padrão e provavelmente o que você costuma usar. Os comandos não fazem nada a menos que o usuário o execute na linha de comando. Depois e antes do modo, execute o comando sempre que você executar um comando ondemand. Por exemplo, o "Welcome" ou "Pres a chave para fechar" é antes e depois do evento. |
Esta ferramenta pode ser usada para executar um conjunto de ações. Neste modo, você pode definir muitos comandos atômicos e definir a sequência usando um arquivo externo.
As configurações arquivam 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 é liberada sob o prazo da licença do MIT.
O software é fornecido "como está", sem garantia de qualquer tipo, expresso ou implícito, incluindo, entre outros, as garantias de comercialização, aptidão para uma finalidade específica e não innoculação. Em nenhum caso os autores ou detentores de direitos autorais serão responsáveis por qualquer reclamação, danos ou outro passivo, seja em uma ação de contrato, delito ou não, decorrente de, fora ou em conexão com o software ou o uso ou outras negociações no software.
Ícones feitos por eucalip