🔥 커스텀 이름 사용하기
272자
3분
기본적으로 @Option
과 @Flag
속성은 속성 이름을 사용해 커맨드 라인 인자 이름을 생성합니다. 하지만 이 이름을 입맛에 맞게 마음대로 변경할 수 있어요. 예를 들어, verbose
플래그 대안으로 -v
를 사용할 수 있게 만들 수 있죠. 그러면 사용자는 --verbose
대신 -v
를 사용할 수 있습니다. 새로운 인터페이스는 다음과 같아요:
% count -v -i readme.md -o readme.counts Counting words in 'readme.md' and writing the result into 'readme.counts'. % count --input readme.md --output readme.counts -v Counting words in 'readme.md' and writing the result into 'readme.counts'. % count -o readme.counts -i readme.md --verbose Counting words in 'readme.md' and writing the result into 'readme.counts'.
shell
@Option
과 @Flag
이니셜라이저에 name
파라미터를 전달해 입력 이름을 커스텀할 수 있어요:
@main struct Count: ParsableCommand { @Option(name: [.short, .customLong("input")]) var inputFile: String @Option(name: [.short, .customLong("output")]) var outputFile: String @Flag(name: .shortAndLong) var verbose = false mutating func run() throws { ... } }
swift
위 코드를 하나씩 뜯어보면:
inputFile
속성에name: [.short, .customLong("input")]
을 전달했습니다..short
은 속성 이름 첫 글자만 사용해i
로 단축 이름을 만들고,.customLong("input")
은-input
이라는 긴 이름을 커스텀하게 지정합니다.
outputFile
속성도 마찬가지로.short
와.customLong("output")
을 사용해o
와-output
이름을 지정했어요.verbose
속성은name: .shortAndLong
을 사용했는데, 이는v
와-verbose
라는 짧은 이름과 긴 이름을 모두 사용하겠다는 뜻이에요.
기본 이름 지정 방식은 .long
인데, 이는 속성 이름 앞에 --
를 붙여 사용해요. .short
은 속성 이름 첫 글자만 사용하고 -
를 붙이며, 여러 개 짧은 옵션을 함께 사용할 수 있게 해줍니다. .customShort(_:)
와 .customLong(_:)
메서드를 사용하면 짧은 이름과 긴 이름을 직접 지정할 수도 있고, .shortAndLong
속성을 사용하면 짧은 이름과 긴 이름 두 가지를 모두 만들어내는 일반적인 상황을 간단히 처리할 수 있습니다.
이렇게 커스텀 이름을 사용하면 사용자는 커맨드 라인 인자를 더욱 직관적이고 편리하게 사용할 수 있습니다.