Bibliothek, die das Argument der Konsolenargument und Skriptautomatisierung automatisiert.
Die Befehlszeile Parsen wird normalerweise auf diese Weise angesprochen: Sie definieren die Argumentsyntax, analysieren Sie sie mithilfe der Befehlszeilen -Parser -Bibliothek und verwenden dann den Parameter in die Anwendung. Dieser Ansatz braucht viele Schritte und es ist schwer zu Mantain. Diese Bibliothek kollabiert alle Schritte in nur einem: Beschreiben Sie Ihre Methode.
Sie müssen nur irgendwo eine Methode deklarieren und eine Annotation hinzufügen, um die Dinge automatisch zu lassen. Ein weiteres interessantes Szenario ist die Ausführung mehrerer Befehle nach Konfigurations -YAML -Datei (ähnlich dem Docker -Dateien -Mechanismus).
Sehen Sie sich die Exampe an, um zu erfahren, wie dies Ihre Konsolenanwendung vereinfacht.
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
}
}Dieses Programm wird verwendbar sein:
Myprogram MyMethod --inputOne xxxx --inputTwo 23
Jede von ConsoleCommand kommetierte Methode ist für die Begründung erhältlich. Die Methode kann im Klassen in der Programmdatei statisch sein oder nicht. Nicht statische Klassen werden mit DI erstellt und können Abhängigkeiten im Cosstructor empfangen. Der Standardbefehl ist die Info -, die Nutzinformationen anzeigt (automatisch aus Befehlsdefinitionen generiert).
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 ( ) ; | Verfahren | Notiz |
|---|---|
| Konfiguration | Die Inf -Service -Sammlung ist null, erstellt einen internen Container für DI |
| LoadCommand | Laden Sie alle Befehle aus Eintragsversammlung + Basisbefehle und basieren Sie auf Annotation |
| Registrieren | Registrieren Sie eine Abhängigkeit für Befehle. Wenn Sie DI in der Hauptanwendung verwenden, wird die Abhängigkeit auch im Haupt -DI -Container hinzugefügt. Wenn Sie DI verwenden und bereits eine Abhängigkeit hinzugefügt haben, müssen Sie sich nicht registrieren. |
| Konfigurieren | Dadurch enthält die resultierende Konfiguration. Verwenden Sie Ihr Risiko. |
| Laufen | Das Programm ausführen |
| Standard | Der Befehl wurde ausgeführt, wenn kein Befehl angegeben ist. Standardwert ist der Info -Befehl. |
| Parameter | Notiz |
|---|---|
| Name | Der Name des Befehls (wird zum Starten von der Konsole verwendet) |
| ISPUBLIC | Wenn es wahr ist, ist es auf Konsoleninformationen sichtbar |
| Modus | Kann auf Nachfrage sein, |
| Befehl | Die Ausführungsauftrag für Nicht-On-Demand, Beperecommand oder After Command. Die ON -Deamand -Optionen sind die Standardeinstellung und wahrscheinlich das, was Sie normalerweise wagen. Die Befehle tun nichts, wenn der Benutzer es nicht aus der Befehlszeile ausführt. Nach und vor dem Modus führen Sie den Befehl jederzeit aus, wenn Sie einen ONDEMAND -Befehl ausführen. Zum Beispiel sind die "Willkommen" oder "Pres a Schlüssel zum Schließen" vor und nach dem Ereignis. |
Dieses Tool kann verwendet werden, um eine Reihe von Aktionen auszuführen. In diesem Modus können Sie viele Atombefehle definieren und dann die Sequenz mit einer externen Datei definieren.
Die Einstellungsdatei 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.yamlDiese Bibliothek wird unter der Laufzeit der MIT -Lizenz veröffentlicht.
Die Software wird "wie es ist" ohne Garantie jeglicher Art, ausdrücklich oder stillschweigend bereitgestellt, einschließlich, aber nicht beschränkt auf die Gewährleistung der Handelsfähigkeit, die Eignung für einen bestimmten Zweck und die Nichtverletzung. In keinem Fall sind die Autoren oder Urheberrechtsinhaber für Ansprüche, Schäden oder andere Haftungen haftbar, sei es in einer Vertragsklage, unerbittlich oder auf andere Weise, die sich aus oder im Zusammenhang mit der Software oder anderen Geschäften in der Software ergeben.
Ikonen, die von Eucalyp aus Flatikon hergestellt wurden