🔥 플래그 추가하기
188자
3분
이제 우리가 만들고 있는 도구에 --verbose
플래그를 추가해 보겠습니다. 사용자가 해당 옵션을 지정한 경우에만 메시지를 출력하도록 하는 거죠. 아래와 같이 동작하게 만들어 볼게요:
% count --input-file readme.md --output-file readme.counts (no output) % count --verbose --input-file readme.md --output-file readme.counts Counting words in 'readme.md' and writing the result into 'readme.counts'.
shell
Count
구조체를 다음과 같이 변경해 보겠습니다:
@main struct Count: ParsableCommand { @Option var inputFile: String @Option var outputFile: String @Flag var verbose = false mutating func run() throws { if verbose { print(""" Counting words in '\(inputFile)' \\ and writing the result into '\(outputFile)'. """) } // 'inputFile'을 읽고, 단어를 세고, 'outputFile'에 저장합니다. } }
swift
@Flag
속성 래퍼는 --name
처럼 생긴 명령줄 인자를 나타냅니다. 속성 이름에서 이름을 유추하죠. 플래그는 여기서 verbose
속성과 같이 대부분 Boolean 값으로 사용합니다.
@Flag
속성 래퍼를 사용하면 명령줄에서 --verbose
와 같은 형식으로 플래그를 지정할 수 있습니다. 사용자가 해당 플래그를 지정하면 verbose
속성 값을 true
로 설정합니다.
run()
메서드에서는 verbose
속성 값을 확인하여 메시지를 출력할지 여부를 결정합니다. verbose
가 true
이면 입력 파일과 출력 파일 이름을 포함한 메시지를 출력하는 거예요.
이렇게 플래그를 추가하면 사용자가 원할 때만 추가 정보를 출력하도록 할 수 있습니다. 간단하면서도 유용한 기능이 아닐까요?