피드로 돌아가기
Dev.toBackend
원문 읽기
GCli v3.5: Dynamic Completion 및 Middleware 도입을 통한 CLI DX 혁신
gookit/gcli v3.5.0 released - easy-to-use, feature-rich Go command line application and tool library
AI 요약
Context
기존 CLI 도구의 Shell Completion 생성 시 명령어를 하드코딩해야 하는 정적 구조로 인해 기능 추가 시마다 스크립트 재생성이 필요한 제약 존재. 또한 공통 로직 처리를 위한 구조적 인터페이스 부재로 코드 중복 발생 및 복잡한 옵션 관리의 가시성 저하 문제 직면.
Technical Solution
- Binary 호출 기반의 Dynamic Completion 모드 도입으로 런타임 시점에 후보군을 fetch하는 구조 설계
- Command.Use() 및 App.Use()를 통한 Middleware 패턴 적용으로 Auth 및 Logging 등 Cross-cutting Concerns의 중앙 집중식 제어 구현
- Category 필드를 활용한 Grouped Help 구조 설계로 명령어 및 옵션의 계층적 분류 및 가시성 확보
- TagRuleField 도입 및 Anonymous Nested Struct 확장 지원을 통해 선언적 Struct Binding 유연성 강화
- Required Option 누락 시 Question 객체와 연동하여 인터랙티브하게 값을 입력받는 Declarative Input 로직 구현
- POSIX 표준을 준수하는 Short-option Merging 로직 적용으로 사용자 입력 편의성 증대
실천 포인트
1. CLI 설계 시 정적 스크립트 대신 Binary Callback 기반의 Dynamic Completion 검토
2. 반복되는 전처리 로직은 Middleware 체인을 통해 Command Execution Pipeline 구축
3. 복잡한 옵션 셋은 Struct Tag 기반의 선언적 바인딩을 통해 코드 응집도 향상
4. 사용자 경험 개선을 위해 필수 인자 누락 시 인터랙티브 프롬프트 제공으로 UX 최적화