ไลบรารีที่ทำให้การแยกวิเคราะห์อาร์กิวเมนต์คอนโซลและระบบอัตโนมัติสคริปต์อัตโนมัติ
การแยกวิเคราะห์บรรทัดคำสั่งเป็นสิ่งที่มักจะเข้าหาด้วยวิธีนี้: คุณกำหนดไวยากรณ์อาร์กิวเมนต์คุณแยกวิเคราะห์โดยใช้ไลบรารีตัวแยกวิเคราะห์บรรทัดคำสั่งจากนั้นคุณใช้พารามิเตอร์ลงในแอปพลิเคชัน วิธีการนี้ต้องการหลายขั้นตอนและมันยากที่จะ mantain ห้องสมุดนี้ล่มสลายทุกขั้นตอนในหนึ่งเดียว: อธิบายวิธีการของคุณ
คุณเพียงแค่ต้องประกาศวิธีการที่ไหนสักแห่งและเพิ่มคำอธิบายประกอบเพื่อให้สิ่งต่าง ๆ ดำเนินไปโดยอัตโนมัติ สถานการณ์ที่น่าสนใจอีกประการหนึ่งคือการดำเนินการหลายคำสั่งโดยไฟล์ config yaml (คล้ายกับกลไกไฟล์ Docker)
ดู exampe เพื่อเรียนรู้ว่าสิ่งนี้จะทำให้แอปพลิเคชันคอนโซลของคุณง่ายขึ้น
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
}
}โปรแกรมนี้จะใช้งานได้:
Myprogram MyMethod --inputOne xxxx --inputTwo 23
แต่ละวิธีมีคำอธิบายประกอบโดย ConsoleCommand พร้อมใช้งานสำหรับการเรียกใช้ วิธีการสามารถอยู่ในคลาส ouside ไฟล์โปรแกรมคงที่หรือไม่ คลาสที่ไม่คงที่ถูกสร้างขึ้นโดยใช้ DI และสามารถรับการอ้างอิงใน costructor คำสั่งเริ่มต้นคือข้อมูลที่แสดงข้อมูลการใช้งาน (สร้างขึ้นโดยอัตโนมัติจากคำจำกัดความคำสั่ง)
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 ( ) ; | วิธี | บันทึก |
|---|---|
| การกำหนดค่า | คอลเลกชันบริการ IN IS NULL สร้างคอนเทนเนอร์ภายในสำหรับ DI |
| ผู้ว่าด้วยโหลด | โหลดคำสั่งทั้งหมดจากคำสั่งชุดแอสเซมบลี + ฐานโดยพื้นฐานบนคำอธิบายประกอบ |
| ลงทะเบียน | ลงทะเบียนการพึ่งพาคำสั่ง หากคุณใช้ DI ในแอปพลิเคชันหลักการพึ่งพาจะถูกเพิ่มลงในคอนเทนเนอร์หลัก DI ด้วย หากคุณใช้ DI และคุณเพิ่มการพึ่งพาคุณไม่จำเป็นต้องลงทะเบียน |
| กำหนดค่า | สิ่งนี้เปิดเผยการกำหนดค่าที่เกิดขึ้น ใช้ความเสี่ยงของคุณ |
| วิ่ง | ดำเนินการโปรแกรม |
| ค่าเริ่มต้น | คำสั่งดำเนินการหากไม่ได้ระบุคำสั่ง ค่าเริ่มต้นคือคำสั่งข้อมูล |
| พารามิเตอร์ | บันทึก |
|---|---|
| ชื่อ | ชื่อของคำสั่ง (จะใช้สำหรับเปิดตัวจากคอนโซล) |
| เกี่ยวกับสิ่งแวดล้อม | หากเป็นจริงจะปรากฏบนข้อมูลคอนโซล |
| โหมด | สามารถตามความต้องการได้ |
| คำสั่ง | คำสั่งการดำเนินการสำหรับที่ไม่ตามความต้องการ, beforecommand หรือ aftercommand ตัวเลือก ON DEAMAND เป็นตัวเลือกเริ่มต้นและอาจเป็นสิ่งที่คุณมักจะ whant คำสั่งไม่ทำอะไรเลยเว้นแต่ผู้ใช้จะเรียกใช้จากบรรทัดคำสั่ง หลังจากและก่อนโหมดเรียกใช้คำสั่ง เมื่อใดก็ตามที่ คุณเรียกใช้คำสั่ง ondemand ตัวอย่างเช่น "ยินดีต้อนรับ" หรือ "pres a key to close" คือก่อนและหลังเหตุการณ์ |
เครื่องมือนี้สามารถใช้เพื่อดำเนินการชุดการดำเนินการ ในโหมดนี้คุณสามารถกำหนดคำสั่งอะตอมจำนวนมากจากนั้นกำหนดลำดับโดยใช้ไฟล์ภายนอก
การตั้งค่าไฟล์ 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.yamlห้องสมุดนี้เปิดตัวภายใต้ระยะเวลาของใบอนุญาต MIT
ซอฟต์แวร์มีให้ "ตามสภาพ" โดยไม่มีการรับประกันใด ๆ ไม่ว่าโดยชัดแจ้งหรือโดยนัยรวมถึง แต่ไม่ จำกัด เฉพาะการรับประกันความสามารถในการค้าการออกกำลังกายสำหรับวัตถุประสงค์เฉพาะและการไม่เข้าร่วม ไม่ว่าในกรณีใดผู้เขียนหรือผู้ถือลิขสิทธิ์จะต้องรับผิดชอบต่อการเรียกร้องความเสียหายหรือความรับผิดอื่น ๆ ไม่ว่าจะเป็นการกระทำของสัญญาการละเมิดหรืออื่น ๆ ที่เกิดขึ้นจากหรือเกี่ยวข้องกับซอฟต์แวร์หรือการใช้งานหรือการติดต่ออื่น ๆ ในซอฟต์แวร์
ไอคอนที่ทำโดย Eucalyp จาก flaticon