Bibliothèque qui automatise l'analyse des arguments de la console et l'automatisation des scripts.
L'analyse de ligne de commande est quelque chose qui est généralement approché de cette manière: vous définissez la syntaxe de l'argument, vous l'analysez en utilisant la bibliothèque d'analyse de ligne de commande, puis vous utilisez le paramètre dans l'applciation. Cette approche a besoin de nombreuses étapes et il est difficile de manquer. Cette bibliothèque efface toutes les étapes en une seule: décrivez votre méthode.
Il vous suffit de déclarer une méthode quelque part et d'ajouter une annotation dessus pour laisser les choses se dérouler automatiquement. Un autre scénario intéressant est l'exécution de plusieurs commandes par fichier config yaml (similaire au mécanisme des fichiers docker).
Voir l'exampe pour savoir comment cela simplifiera votre application 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
}
}Ce programme sera utilisable en cours d'exécution:
Myprogram MyMethod --inputOne xxxx --inputTwo 23
Chaque méthode annotée par ConsoleCommand est disponible pour être invoqué. La méthode peut être dans les classes OUSIDE le fichier du programme, statique ou non. Les classes non statiques sont créées à l'aide de DI et peuvent recevoir des dépendances dans le costructeur. La commande par défaut est la seule information, qui affiche les informations d'utilisation (générées automatiquement à partir des définitions de commande)
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éthode | Note |
|---|---|
| Configurer | La collection de services INF est nul, crée un conteneur interne pour DI |
| Commandes de chargement | Chargez toutes les commandes de l'assemblage d'entrée + des commandes de base, en basant l'annotation |
| Registre | Enregistrez une dépendance pour les commandes. Si vous utilisez DI sur l'application principale, la dépendance sera également ajoutée sur le conteneur principal DI. Si vous utilisez DI et que vous avez déjà ajouté une dépendance, vous n'avez pas besoin de vous inscrire. |
| Configurer | Cela expose la configuration résultante. Utiliser à vos risques. |
| Courir | Exécuter le programme |
| Défaut | La commande exécutée si aucune commande n'est spécifiée. La valeur par défaut est la commande info. |
| Paramètre | Note |
|---|---|
| Nom | Le nom de la commande (sera utilisé pour le lancer à partir de la console) |
| Ispublique | Si vrai, il est visible sur les informations sur la console |
| Mode | Peut être à la demande, |
| Commande | L'Ordre d'exécution pour la non-demande, la Commécand ou la recrue. Les options ON Deamand sont la par défaut et probablement ce que vous avez habituellement sur la planche. Les commandes ne font rien à moins que l'utilisateur l'exécute à partir de la ligne de commande. Le mode après et avant exécute la commande chaque fois que vous exécutez une commande ondemand. Par exemple, le "Bienvenue" ou "Pres une clé à fermer" est avant et après l'événement. |
Cet outil peut être utilisé pour exécuter un ensemble d'action. Dans ce mode, vous pouvez définir de nombreuses commandes atomiques, puis définir la séquence à l'aide d'un fichier externe.
Le fichier de paramètres 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.yamlCette bibliothèque est publiée en vertu de la durée de la licence du MIT.
Le logiciel est fourni "tel quel", sans garantie d'aucune sorte, express ou implicite, y compris, mais sans s'y limiter, les garanties de qualité marchande, d'adéquation à un usage particulier et de non-contrefaçon. En aucun cas, les auteurs ou les détenteurs de droits d'auteur ne seront pas responsables de toute réclamation, dommage ou autre responsabilité, que ce soit dans une action de contrat, de délit ou autre, découlant de, hors du logiciel ou de l'utilisation ou d'autres relations dans le logiciel.
Icônes fabriquées par Eucalyp à partir de Flaticon