المكتبة التي تعمل أتمتة تحليل حجة وحدة التحليل وأتمتة البرنامج النصي.
تحليل سطر الأوامر هو شيء يتم التعامل معه عادةً بهذه الطريقة: يمكنك تحديد بناء جملة الوسيطة ، يمكنك تحليله باستخدام مكتبة محلل سطر الأوامر ثم تستخدم المعلمة في عملية التطبيب. هذا النهج يحتاج إلى العديد من الخطوات ومن الصعب أن يكون Mantain. هذه المكتبة تنهار جميع الخطوات في خطوة واحدة فقط: صف طريقتك.
تحتاج فقط إلى إعلان طريقة في مكان ما وإضافة تعليق توضيحي عليه للسماح للأشياء بالتواصل التلقائي. سيناريو آخر مثير للاهتمام هو تنفيذ أوامر متعددة بواسطة ملف yaml config (على غرار آلية ملفات Docker).
انظر البشر لمعرفة كيف سيبسيط هذا تطبيق وحدة التحكم الخاصة بك.
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 متاحة للاستدعاء. يمكن أن تكون الطريقة في الفئات تعطي ملف البرنامج ، ثابت أم لا. يتم إنشاء فصول غير ثابتة باستخدام 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 ( ) ; | طريقة | ملحوظة |
|---|---|
| تكوين | مجموعة خدمة inf خالية ، وتنشئ حاوية داخلية لـ DI |
| LoadCommand | قم بتحميل جميع الأوامر من أوامر Assembly Assembly + Base ، وتستمع إلى التعليق التوضيحي |
| يسجل | تسجيل التبعية للأوامر. إذا كنت تستخدم DI على التطبيق الرئيسي ، فسيتم إضافة التبعية على حاوية DI الرئيسية أيضًا. إذا كنت تستخدم DI وقمت بالفعل بإضافة التبعية ، فأنت لا تحتاج إلى التسجيل. |
| تكوين | هذا يكشف التكوين الناتج. استخدم على مسؤوليتك. |
| يجري | تنفيذ البرنامج |
| تقصير | تم تنفيذ الأمر إذا لم يتم تحديد أمر. القيمة الافتراضية هي أمر المعلومات. |
| المعلمة | ملحوظة |
|---|---|
| اسم | سيتم استخدام اسم الأمر (سيتم استخدامه لإطلاقه من وحدة التحكم) |
| Ispublic | إذا كان صحيحًا ، فسيكون مرئيًا على معلومات وحدة التحكم |
| وضع | يمكن أن يكون عند الطلب ، |
| طلب | أمر التنفيذ لغير الطلب ، أو beforecmomn ، أو بعد ذلك. خيارات On Deamand هي الخيار الافتراضي وربما ما كنت عادة ما تكون. لا تفعل الأوامر شيئًا ما لم يديره المستخدم من سطر الأوامر. بعد الوضع وقبل تشغيل الأمر في أي وقت تقوم فيه بتشغيل أمر OnDemand. على سبيل المثال ، فإن "الترحيب" أو "مفتاح الإغلاق" قبل الحدث وبعده. |
يمكن استخدام هذه الأداة لتنفيذ مجموعة من الإجراءات. في هذا الوضع ، يمكنك تحديد العديد من الأوامر الذرية ثم تحديد التسلسل باستخدام ملف خارجي.
ملف الإعدادات 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يتم إصدار هذه المكتبة تحت مدة ترخيص معهد ماساتشوستس للتكنولوجيا.
يتم توفير البرنامج "كما هو" ، دون أي ضمان من أي نوع ، صريح أو ضمني ، بما في ذلك على سبيل المثال لا الحصر ضمانات القابلية للتسويق واللياقة لغرض معين وعدم الانفجار. لا يجوز بأي حال من الأحوال أن يكون المؤلفون أو حاملي حقوق الطبع والنشر مسؤولاً عن أي مطالبة أو أضرار أو مسؤولية أخرى ، سواء في إجراء عقد أو ضرر أو غير ذلك ، ناشئة عن أو خارج البرنامج أو الاستخدام أو غيرها من المعاملات في البرنامج.
أيقونات مصنوعة من Eucalyp من Flaticon