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

296자
4분

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

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

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

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

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

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

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

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

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

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