🔥 ParsableCommand
246자
4분
ParsableCommand
는 하위 명령어를 가질 수 있는 명령어를 만들 때 사용하는 프로토콜입니다. ArgumentParser
로 커맨드 라인 도구를 만들 때 필수적인 구성 요소죠. 아래 코드는 ParsableCommand
프로토콜을 정의하고 있습니다.
protocol ParsableCommand : ParsableArguments
swift
ParsableCommand
프로토콜은 ParsableArguments
프로토콜을 상속해요. 그래서 ParsableArguments
기능도 모두 사용할 수 있답니다.
이 프로토콜로 커맨드를 만들려면 먼저 @Argument
, @Option
, @Flag
속성 래퍼로 속성을 선언하세요. 필요하다면 @OptionGroup
으로 옵션 그룹을 포함시킬 수도 있죠. 마지막으로 run()
메서드에서 명령어 기능을 구현하면 끝납니다.
@main struct Repeat: ParsableCommand { @Argument(help: "반복할 문구입니다.") var phrase: String @Option(help: "'phrase'를 반복할 횟수입니다.") var count: Int? = nil mutating func run() throws { let repeatCount = count ?? 2 for _ in 0..<repeatCount { print(phrase) } } }
swift
위 코드를 하나씩 살펴볼까요?
@main
속성은 이 타입이 프로그램 진입점임을 나타냅니다. 컴파일러는@main
이 붙은 타입이나main.swift
파일을 실행 파일 시작점으로 사용해요. 둘 중 하나만 사용할 수 있으니,@main
을 추가할 때는main.swift
파일 이름을 명령어 이름으로 바꿔주세요.Repeat
구조체는ParsableCommand
프로토콜을 따르고 있네요. 이렇게 하면 이 구조체를 명령어로 사용할 수 있습니다.phrase
속성은@Argument
래퍼로 선언했어요. 인자는 필수로 제공해야 하는 값이랍니다.help
매개변수로 인자에 대한 설명을 추가할 수 있죠.count
속성은@Option
래퍼로 선언했습니다. 옵션은 명령어 뒤에 또는-
를 붙여 제공하는 값이에요. 기본값을nil
로 설정했기 때문에 옵션을 생략할 수 있죠.run()
메서드는 명령어 실제 동작을 구현하는 곳입니다. 여기서는phrase
를count
만큼 반복해서 출력합니다.count
가nil
이면 기본값 2를 사용해요.
이렇게 ParsableCommand
프로토콜을 사용하면 간단하면서도 강력한 커맨드 라인 도구를 만들 수 있답니다. 코드만 봐도 명령어 사용법과 동작을 쉽게 이해할 수 있죠?