🔥 인자에 대한 도움말 내용 커스터마이징하기

296자
4분

도움말 텍스트를 더 디테일하게 조정하려면 문자열 리터럴 대신 ArgumentHelp 인스턴스를 전달해야 해요. ArgumentHelp 타입은 추상(문자열 리터럴이 되는 부분)과 토론, 사용법 문자열에서 사용할 값 이름, 해당 인자에 대한 가시성 수준을 포함할 수 있죠.

아래는 약간의 추가 커스터마이징이 들어간 동일한 명령이에요:

swift
struct Example: ParsableCommand {
    // 처리 중에 추가 정보 표시 여부를 결정하는 플래그
    @Flag(help: "Display extra information while processing.")
    var verbose = false
 
    // 표시할 추가 줄 수를 지정하는 옵션
    @Option(help: ArgumentHelp(
        "The number of extra lines to show.",
        valueName: "n"))
    var extraLines = 0
 
    // 입력 파일을 지정하는 인자
    @Argument(help: ArgumentHelp(
        "The input file.",
        discussion: "If no input file is provided, the tool reads from stdin.",
        valueName: "file"))
    var inputFile: String?
}
 
swift
struct Example: ParsableCommand {
    // 처리 중에 추가 정보 표시 여부를 결정하는 플래그
    @Flag(help: "Display extra information while processing.")
    var verbose = false
 
    // 표시할 추가 줄 수를 지정하는 옵션
    @Option(help: ArgumentHelp(
        "The number of extra lines to show.",
        valueName: "n"))
    var extraLines = 0
 
    // 입력 파일을 지정하는 인자
    @Argument(help: ArgumentHelp(
        "The input file.",
        discussion: "If no input file is provided, the tool reads from stdin.",
        valueName: "file"))
    var inputFile: String?
}
 

각 프로퍼티에 대해 살펴볼게요:

  • verbose: 처리 중에 추가 정보 표시 여부를 결정하는 플래그예요. 기본값은 false죠.
    • help 매개변수로 간단한 도움말 메시지를 전달합니다.
  • extraLines: 표시할 추가 줄 수를 지정하는 정수형 옵션이에요. 기본값은 0이죠.
    • ArgumentHelp를 사용하여 도움말 메시지와 값 이름(n)을 커스터마이징합니다.
  • inputFile: 입력 파일 경로를 받는 옵셔널 문자열 인자예요.
    • ArgumentHelp를 사용하여 도움말 메시지, 추가 설명, 값 이름(file)을 커스터마이징합니다.
    • 추가 설명에는 입력 파일이 제공되지 않으면 표준 입력에서 읽는다는 내용이 들어가요.

이제 이 명령에 대한 도움말 화면을 살펴볼까요?

text
USAGE: example [--verbose] [--extra-lines <n>] [<file>]

ARGUMENTS:
  <file>                  The input file.
        If no input file is provided, the tool reads from stdin.

OPTIONS:
  --verbose               Display extra information while processing.
  --extra-lines <n>       The number of extra lines to show. (default: 0)
  -h, --help              Show help information.
text
USAGE: example [--verbose] [--extra-lines <n>] [<file>]

ARGUMENTS:
  <file>                  The input file.
        If no input file is provided, the tool reads from stdin.

OPTIONS:
  --verbose               Display extra information while processing.
  --extra-lines <n>       The number of extra lines to show. (default: 0)
  -h, --help              Show help information.

ArgumentHelp로 커스터마이징한 내용들이 잘 반영되어 있네요:

  • <file> 인자의 도움말에는 추가 설명이 들어가 있어요.
  • -extra-lines 옵션의 값 이름이 <n>으로 표시되고 있죠.
  • 기본값들도 괄호 안에 잘 표시되고 있습니다.

이렇게 ArgumentHelp 타입을 활용하면 각 인자와 옵션에 대한 도움말을 유연하게 커스터마이징할 수 있어요. 사용자에게 명령의 사용법과 의미를 잘 전달할 수 있도록 도와주는 강력한 도구랍니다!

YouTube 영상

채널 보기
NestJS 커스텀 데코레이터 인자 전달 및 파이프 검증 활용법 | NestJS 가이드
매번 ValidationPipe 복붙하세요? NestJS 전역 파이프로 한 번에 해결하기 | NestJS 가이드
존 매카시가 들려주는 인공지능의 탄생 이야기
NestJS 커스텀 데코레이터, createParamDecorator 사용 | NestJS 가이드
입력을 전처리하는 Functor - Contravariant와 contramap 이해하기 | 프로그래머를 위한 카테고리 이론
class-validator 와 DTO | NestJS 가이드
미들웨어 vs 가드, 왜 NestJS에서는 가드가 더 똑똑할까? | NestJS 가이드
Pro펑터, 입력과 출력을 동시에 다루는 펑터 | 프로그래머를 위한 카테고리 이론