🔥 도움말 화면에서 인자 그룹화하기
252자
3분
@OptionGroup
선언에서 제목을 제공하면 해당 타입의 속성들이 도움말 화면에서 제목 아래에 그룹화됩니다. 아래 예제를 살펴보면서 이해해 보세요:
struct BuildOptions: ParsableArguments { @Option(help: "컴파일러에 전달할 설정입니다.") var compilerSetting: [String] = [] // 컴파일러에 전달할 설정 옵션을 배열로 받습니다. @Option(help: "링커에 전달할 설정입니다.") var linkerSetting: [String] = [] // 링커에 전달할 설정 옵션을 배열로 받습니다. } struct Example: ParsableCommand { @Argument(help: "처리할 입력 파일입니다.") var inputFile: String // 처리할 입력 파일 경로를 인자로 받습니다. @Flag(help: "추가 출력을 보여줍니다.") var verbose: Bool = false // 추가 출력 여부를 Bool 플래그로 받습니다. 기본값은 false입니다. @Option(help: "설정 파일의 경로입니다.") var configFile: String? // 설정 파일 경로를 옵션으로 받습니다. 옵셔널 타입입니다. @OptionGroup(title: "Build Options") var buildOptions: BuildOptions // BuildOptions 타입의 buildOptions 속성을 "Build Options" 그룹으로 묶습니다. }
swift
위 코드에서 BuildOptions
구조체는 compilerSetting
과 linkerSetting
두 개의 옵션을 가지고 있어요. 이들은 @OptionGroup
을 사용해서 Example
명령에서 "Build Options"라는 제목으로 그룹화됩니다.
이제 터미널에서 example --help
명령을 실행하면 다음과 같은 도움말 화면이 표시되는 걸 볼 수 있어요:
USAGE: example <input-file> [--verbose] [--config-file <config-file>] [--compiler-setting <compiler-setting> ...] [--linker-setting <linker-setting> ...] ARGUMENTS: <input-file> 처리할 입력 파일입니다. BUILD OPTIONS: --compiler-setting <compiler-setting> 컴파일러에 전달할 설정입니다. --linker-setting <linker-setting> 링커에 전달할 설정입니다. OPTIONS: --verbose 추가 출력을 보여줍니다. --config-file <config-file> 설정 파일의 경로입니다. -h, --help 도움말 정보를 표시합니다.
text
보시다시피 compilerSetting
과 linkerSetting
옵션이 "BUILD OPTIONS" 섹션 아래에 그룹화되어 표시되네요. 이렇게 관련된 옵션들을 그룹으로 묶어주면 사용자가 명령의 구조를 더 쉽게 이해할 수 있답니다. 또한 도움말 메시지의 내용도 깔끔하게 정렬되어 있고, 각 옵션에 대한 설명도 명확하게 제공되고 있죠? 이런 식으로 사용자 친화적인 CLI 도구를 만들 수 있어요.