콘솔 인수 구문 분석 및 스크립트 자동화를 자동화하는 라이브러리.
명령 줄 구문 분석은 일반적으로 이러한 방식으로 접근하는 것입니다. 인수 구문을 정의하고 명령 줄 파서 라이브러리를 사용하여 구문 분석 한 다음 매개 변수를 ApplCiation에 사용합니다. 이 접근법에는 많은 단계가 필요하며 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에 의해 주석이 달린 각 방법은 호출 될 수 있습니다. 메소드는 클래스에서 정적 여부에 관계없이 프로그램 파일을 거부 할 수 있습니다. 비 정적 클래스는 DI를 사용하여 생성되며 Costructor에서 종속성을받을 수 있습니다. 기본 명령은 정보 1입니다. 사용법 정보를 표시합니다 (명령 정의에서 자동으로 생성)
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 용 내부 컨테이너를 만듭니다. |
| 로드 커맨드 | 입력 어셈블리 + 기본 명령에서 모든 명령을로드하여 주석을 바탕으로합니다. |
| 등록하다 | 명령에 대한 종속성을 등록하십시오. 메인 애플리케이션에서 DI를 사용하는 경우 주 DI 컨테이너에도 종속성이 추가됩니다. DI를 사용하고 있고 이미 종속성을 추가 한 경우 등록 할 필요가 없습니다. |
| 구성 | 결과 구성이 노출됩니다. 당신의 위험에 사용하십시오. |
| 달리다 | 프로그램을 실행하십시오 |
| 기본 | 명령이 지정되지 않으면 실행 된 명령이 실행됩니다. 기본값은 정보 명령입니다. |
| 매개 변수 | 메모 |
|---|---|
| 이름 | 명령의 이름 (콘솔에서 시작하는 데 사용됩니다) |
| ispublic | 사실이라면 콘솔 정보에 표시됩니다 |
| 방법 | 주문형 일 수 있으며 |
| 주문하다 | 주문형, 비정부 또는 사후 명령에 대한 실행 순서. 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 라이센스 기간에 따라 릴리스됩니다.
이 소프트웨어는 상업성, 특정 목적에 대한 적합성 및 비 침해에 대한 보증을 포함하여 명시 적 또는 묵시적 보증없이 "그대로"제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타, 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래에서 발생하는 계약, 불법 행위 또는 기타의 행동에 관계없이 청구, 손해 또는 기타 책임에 대해 책임을지지 않습니다.
Flaticon의 유칼립으로 만든 아이콘