예전엔 실행옵션 처리를 위해 nuget에서 듣보잡 cli parser를 찾아 썻었는데,
System.CommandLine이라고 닷넷공식라이브러리가 있길레 썻었음.
https://learn.microsoft.com/en-us/dotnet/standard/commandline/get-started-tutorial
헌데 기존의 듣보잡 라이브러리랑 다르게 쓸데없이 장황한 작성이 필요함에 이상함을 느끼다가 뒤늦게 심플한 버전이 있음을 발견
https://github.com/dotnet/command-line-api/blob/main/docs/DragonFruit-overview.md
아무래도 System.CommandLine은 가능한 CLI명령 패턴을 최대한 지원하도록 설계하고 .DragonFruit는 그를 활용해 실 코드를 줄이는데 집중한듯 함.
내 요구사항을 완벽히 반영하는 닷넷 공식라이브러리가 "용과" 같은 개듣보잡이름일거라 감히 생각해본적이 없어서 찾아내는데 오래걸렸음.
꽤 시간이 흘럿음에도 여전히 둘다 되다만 시험판인것도 아쉬운듯.
그래도 간결하고 일관성있는 cli 작성을 통한 파라미터 자동완성이라던가 꽤 훌륭한 비전을 가지고있음.
특이사항으로 cli에 표시할 설명 등을 attribute가 아니라 xml주석내용을 가지고서 빌드에 반영시키는데, 어떤식으로 구현한건지 분석해 볼만 함.
동적으로 Main함수 찾아낸것에 맞게 파싱하고 콜하는 구조라 code trimming에서 함수가 제거되버리기도하고, 유연성 확장성이 썩 좋지 못함.
닷넷9에서 CLI관련 계획이 있다고 들었는데, 현시점에서는 CAF가 제일 나은 선택지인듯 :
https://github.com/Cysharp/ConsoleAppFramework