좀 더 직관적인 명령줄 해석기 - DragonFruit

Main 메서드에 들어오는 커맨드라인을 해석하는 방법은 정말 다양하지만, 항상 아쉬웠던 것은 정말 이해하기 쉽고 간편한 형태로는 쓸 수 있는 방법이 마땅치 않았습니다. 그렇지만 지금 소개하는 Dragonfruit 프리뷰 라이브러리를 쓰면 강타입을 유지하면서도, 기존의 System.CommandLine 패키지의 기능을 모두 쓸 수 있어서 상당히 유용할 것 같습니다.

닷넷 5 기준으로 Pre-Release 패키지로 설치해서 곧바로 테스트해보실 수 있으니 한 번 시험해보세요!

command-line-api/DragonFruit-overview.md at main · dotnet/command-line-api (github.com)

3개의 좋아요

예를 들면 다음과 같이 Main 메서드를 고치는 것이 가능해집니다.

static void Main(int intOption = 42, bool boolOption = false, FileInfo fileOption = null)
{
    Console.WriteLine($"The value of intOption is: {intOption}");
    Console.WriteLine($"The value of boolOption is: {boolOption}");
    Console.WriteLine($"The value of fileOption is: {fileOption?.FullName ?? "null"}");
}
2개의 좋아요

와 진짜 간결하고 간편하네요. 애용하게 될 것 같습니다.

1개의 좋아요

와…엄청나게 직관적이네요 후덜덜합니다 ㅋㅋㅋ저도 콘솔에서 만들때 써봐야겠네요.

1개의 좋아요

선택적 매개변수를 이용하면 인수가 전달되지 않아도 동작하고, 그렇지 않다면 인수가 전달되어야만 동작하는 그림을 기대했는데 그게 아닌 모양이더라구요.

만약 특정 조건에서 프로그램을 실행하는 대신 도움말을 출력하려고 한다면, 어셈블리를 명시적으로 지정해 해당 어셈블리의 Main 메소드를 실행하는 ExecuteAssembly 메소드를 이용해 도움말을 출력한 후 프로그램을 종료하는 식으로 구현할 수 있습니다.

if (condition)
{
	System.CommandLine.DragonFruit.CommandLine.ExecuteAssembly(typeof(Program).Assembly, new[] { "--help" }, string.Empty);
	return;
}
2개의 좋아요