🔥 ArgumentParser를 Dependency로 추가하기

209자
3분

Swift Argument Parser를 사용해 커맨드 라인 도구를 만들어 보겠습니다. count라는 도구를 만들어 입력 파일을 읽고, 단어 수를 세어, 결과를 출력 파일에 쓰는 기능을 구현해 볼 거예요.

먼저 Swift 패키지 매니저(SPM)을 사용해 새로운 패키지를 생성해 보겠습니다. 터미널에서 다음 명령을 실행하세요:

shell
mkdir Count
cd Count
swift package init --type executable
 
shell
mkdir Count
cd Count
swift package init --type executable
 

위 명령은 "Count"라는 디렉토리를 생성하고, 그 안에서 실행 파일 타입의 Swift 패키지를 초기화합니다. 이제 "Package.swift" 파일을 열어 swift-argument-parser를 패키지 의존성으로 추가하고, 실행 파일 타깃 의존성으로 "ArgumentParser"를 포함시켜야 합니다. 최종적으로 "Package.swift" 파일은 다음과 같이 작성할 수 있어요:

swift
// swift-tools-version:5.5
import PackageDescription
 
let package = Package(
    name: "Count",
    dependencies: [
        .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"),
    ],
    targets: [
        .executableTarget(
            name: "count",
            dependencies: [
                .product(name: "ArgumentParser", package: "swift-argument-parser")
            ])
    ]
)
 
swift
// swift-tools-version:5.5
import PackageDescription
 
let package = Package(
    name: "Count",
    dependencies: [
        .package(url: "https://github.com/apple/swift-argument-parser.git", from: "1.3.0"),
    ],
    targets: [
        .executableTarget(
            name: "count",
            dependencies: [
                .product(name: "ArgumentParser", package: "swift-argument-parser")
            ])
    ]
)
 

위 코드를 자세히 살펴보면:

  1. // swift-tools-version:5.5 주석은 Swift 5.5 버전을 사용한다는 걸 나타냅니다.
  2. import PackageDescription으로 Swift 패키지 매니저 Package 타입을 가져옵니다.
  3. Package 인스턴스를 생성하고 패키지 이름을 "Count"로 지정합니다.
  4. dependencies 배열에 swift-argument-parser 패키지 URL과 버전 조건(1.3.0 이상)을 추가합니다.
  5. targets 배열에는 executableTarget을 추가해 "count"라는 실행 파일을 생성하도록 합니다.
  6. 실행 파일 타깃 dependencies에는 swift-argument-parser 패키지 ArgumentParser 프로덕트를 추가합니다.

이렇게 패키지 의존성을 설정하면 ArgumentParser 프레임워크를 사용할 준비가 됩니다.

위 다이어그램은 우리가 설정한 패키지 구조입니다. Package.swift 파일이 패키지 이름, 의존성, 실행 파일과 테스트 타깃을 정의하고 있어요.

YouTube 영상

채널 보기
트라이(Trie) 자료구조: 파이썬으로 삽입(Insert) 연산 구현하기 | Trie 자료구조 이야기
직교성과 벡터 투영 | 선형대수학
벡터의 정의와 덧셈 연산 | 선형대수학
AI는 왜 수백 차원의 벡터를 사용할까? 고차원 공간과 행렬 | 선형대수학
투영과 예측, 그리고 선형 결합 | 선형대수학
트라이(Trie)를 이용한 자동 완성 알고리즘 | Trie 자료구조 이야기
마지막편, 트라이 노드를 50% 이상 줄이는 방법? 압축 트라이 성능 분석 | Trie 자료구조 이야기
AI 추천 시스템의 원리, 벡터 사이의 각도와 코사인 유사도 | 선형대수학