Perpustakaan yang mengotomatiskan argumen konsol parsing dan otomatisasi skrip.
Parsing baris perintah adalah sesuatu yang biasanya didekati dengan cara ini: Anda mendefinisikan sintaks argumen, Anda menguraikannya menggunakan perpustakaan parser baris perintah dan kemudian Anda menggunakan parameter ke dalam applciation. Pendekatan ini membutuhkan banyak langkah dan sulit untuk dirawat. Perpustakaan ini meruntuhkan semua langkah hanya dalam satu: Jelaskan metode Anda.
Anda hanya perlu mendeklarasikan metode di suatu tempat dan menambahkan anotasi di atasnya untuk membiarkan semuanya berjalan secara otomatis. Skenario menarik lainnya adalah eksekusi beberapa perintah oleh file config yaml (mirip dengan mekanisme file Docker).
Lihat Exampe untuk mempelajari bagaimana ini akan menyederhanakan aplikasi konsol Anda.
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
}
}Program ini akan digunakan:
Myprogram MyMethod --inputOne xxxx --inputTwo 23
Setiap metode yang dianotasi oleh Consolecommand tersedia untuk dipanggil. Metode dapat berada di kelas ouside file program, statis atau tidak. Kelas non statis dibuat menggunakan DI dan dapat menerima dependensi di Costructor. Perintah default adalah info satu, yang menunjukkan informasi penggunaan (dihasilkan secara otomatis dari definisi perintah)
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 ( ) ; | Metode | Catatan |
|---|---|
| Konfigurasi | Koleksi layanan inf nol, membuat wadah internal untuk DI |
| LoadCommand | Muat semua perintah dari rakitan entri + perintah dasar, didasarkan pada anotasi |
| Daftar | Daftarkan ketergantungan untuk perintah. Jika Anda menggunakan di aplikasi utama, ketergantungan akan ditambahkan pada wadah di utama juga. Jika Anda menggunakan DI dan Anda sudah menambahkan ketergantungan, Anda tidak perlu mendaftar. |
| Konfigurasikan | Ini memperlihatkan konfigurasi yang dihasilkan. Gunakan risiko Anda. |
| Berlari | Jalankan program |
| Bawaan | Perintah dieksekusi jika tidak ada perintah yang ditentukan. Nilai default adalah perintah info. |
| Parameter | Catatan |
|---|---|
| Nama | Nama perintah (akan digunakan untuk meluncurkannya dari konsol) |
| Ispublic | Jika benar, itu terlihat pada info konsol |
| Mode | Bisa sesuai permintaan, |
| Memesan | Perintah eksekusi untuk non-permintaan, sebelum perintah, atau aftercommand. Opsi On Deamand adalah yang default dan mungkin apa yang biasanya Anda pudar. Perintah tidak melakukan apa pun kecuali pengguna menjalankannya dari baris perintah. Setelah dan sebelum mode jalankan perintah kapan saja Anda menjalankan perintah OnDemand. Misalnya, "selamat datang" atau "pres a kunci untuk menutup" adalah sebelum dan sesudah acara. |
Alat ini dapat digunakan untuk menjalankan serangkaian tindakan. Dalam mode ini Anda dapat mendefinisikan banyak perintah atom dan kemudian menentukan urutan menggunakan file eksternal.
Pengaturan file 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.yamlPerpustakaan ini dirilis di bawah jangka waktu lisensi MIT.
Perangkat lunak ini disediakan "sebagaimana adanya", tanpa jaminan apa pun, tersurat maupun tersirat, termasuk tetapi tidak terbatas pada jaminan dapat diperjualbelikan, kebugaran untuk tujuan tertentu dan nonpringement. Dalam hal apa pun penulis atau pemegang hak cipta tidak akan bertanggung jawab atas klaim, kerusakan atau tanggung jawab lainnya, baik dalam tindakan kontrak, gugatan atau sebaliknya, timbul dari, di luar atau sehubungan dengan perangkat lunak atau penggunaan atau transaksi lain dalam perangkat lunak.
Ikon yang dibuat oleh Eucalyp dari Flaticon