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