Библиотека, которая автоматизирует консольную аргументацию и автоматизацию сценариев.
Подбор командной строки - это то, что обычно подходит таким образом: вы определяете синтаксис аргумента, вы анализируете его, используя библиотеку анализатора командной строки, а затем используете параметр в аппликацию. Этот подход нуждается в многих шагах, и его трудно изгонять. Эта библиотека разрушает все шаги только один: опишите свой метод.
Вам просто нужно где -то объявить метод и добавить на него аннотацию, чтобы все было автоматически. Другим интересным сценарием является выполнение нескольких команд Config YAML File (аналогично механизму файлов 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, доступен для вызова. Метод может быть в классах, чтобы использовать файл программы, статический или нет. Не статические классы создаются с использованием DI и могут получать зависимости в космоле. Команда по умолчанию - это информация, которая показывает информацию об использовании (сгенерировано автоматически из определений команд)
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 null, создает внутренний контейнер для DI |
| LoadCommand | Загрузите все команды из сборки входа + базовые команды, основываясь на аннотации |
| Зарегистрировать | Зарегистрируйте зависимость для команд. Если вы используете DI в основном применении, зависимость будет добавлена также в основном контейнере DI. Если вы используете DI и уже добавили зависимость, вам не нужно регистрироваться. |
| Настройка | Это раскрывает полученную конфигурацию. Используйте на свой риск. |
| Бегать | Выполнить программу |
| По умолчанию | команда выполнена, если команда не указана. Значение по умолчанию - это команда Info. |
| Параметр | Примечание |
|---|---|
| Имя | Имя команды (будет использоваться для запуска ее из консоли) |
| Ispublic | Если это правда, это видно на информации консоли |
| Режим | Может быть по требованию, |
| Заказ | Приказ о выполнении не по требованию, BeForeCommand или Aftercommand. Параметры на Deamand - это по умолчанию, и, вероятно, то, что вы обычно делаете. Команды ничего не делают, если пользователь не запустит его из командной строки. После и до режима запустите команду в любое время, когда вы запускаете команду Ondemand. Например, «приветствие» или «Pres ключ к закрытию» представлены до и после события. |
Этот инструмент может быть использован для выполнения набора действий. В этом режиме вы можете определить множество атомных команд, а затем определить последовательность, используя внешний файл.
Настройки файл 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