[Tuist] TCA 프레임워크 적용하기

2024. 11. 7. 17:33🍏/Others

Tuist에서 TCA를 적용하기 위해서 작성했습니다.

이전에 만들어두기만 Tuist로 만들어 두기만 하고 방치되었던 repo를 하나 꺼내왔습니다.
tuist@4.15때 만들어진 레포입니다. 아래와 같이 적용시키고, tuist install을 실행하자 

// Tuist/Package.swift
// swift-tools-version: 5.9
import PackageDescription

#if TUIST
    import ProjectDescription

    let packageSettings = PackageSettings(
        productTypes: ["ComposableArchitecture": .framework]
    )
#endif

let package = Package(
    name: "UsicRoom",
    dependencies: [
        .package(url: "https://github.com/pointfreeco/swift-composable-architecture", from: "1.15.2"),
    ]
)
// /Project.swift
dependencies: [
    .external(name: "ComposableArchitecture")
]

 

아래의 오류들이 잔뜩 반겨줍니다. 이유는 swift6 인 것 같습니다.
그래서 Tuist를 최신버전(tuist@4.32.1)으로 올리고 실행하니 정상적으로 됩니다.

warning: 'swift-identified-collections': /Users/chan/Documents/iOS/usic-room/Tuist/.build/checkouts/swift-identified-collections/Package@swift-6.0.swift:5:15: warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
 3 | import PackageDescription
 4 | 
 5 | let package = Package(
   |               |- warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
   |               `- note: use 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)' instead
 6 |   name: "swift-identified-collections",
 7 |   products: [
warning: 'combine-schedulers': /Users/chan/Documents/iOS/usic-room/Tuist/.build/checkouts/combine-schedulers/Package@swift-6.0.swift:5:15: warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
 3 | import PackageDescription
 4 | 
 5 | let package = Package(
   |               |- warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
   |               `- note: use 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)' instead
 6 |   name: "combine-schedulers",
 7 |   platforms: [
warning: 'swift-dependencies': /Users/chan/Documents/iOS/usic-room/Tuist/.build/checkouts/swift-dependencies/Package@swift-6.0.swift:6:15: warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
  4 | import PackageDescription
  5 | 
  6 | let package = Package(
    |               |- warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
    |               `- note: use 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)' instead
  7 |   name: "swift-dependencies",
  8 |   platforms: [
warning: 'swift-concurrency-extras': /Users/chan/Documents/iOS/usic-room/Tuist/.build/checkouts/swift-concurrency-extras/Package@swift-6.0.swift:5:15: warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
 3 | import PackageDescription
 4 | 
 5 | let package = Package(
   |               |- warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
   |               `- note: use 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)' instead
 6 |   name: "swift-concurrency-extras",
 7 |   platforms: [
warning: 'swift-clocks': /Users/chan/Documents/iOS/usic-room/Tuist/.build/checkouts/swift-clocks/Package@swift-6.0.swift:5:15: warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
 3 | import PackageDescription
 4 | 
 5 | let package = Package(
   |               |- warning: 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageVersions:cLanguageStandard:cxxLanguageStandard:)' is deprecated: replaced by 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)'
   |               `- note: use 'init(name:defaultLocalization:platforms:pkgConfig:providers:products:dependencies:targets:swiftLanguageModes:cLanguageStandard:cxxLanguageStandard:)' instead
 6 |   name: "swift-clocks",
 7 |   // NB: While the `Clock` protocol is iOS 16+, etc., the package should support earlier platforms
tuist generate

 

오류는 뜨지만 실행은 됩니다. swift6가 tca의 dependencies들의 swift5 문법을 deprecated 시켰기 때문인가 봅니다. 아무래도 swift5 사용자들을 위한 배려일지도 모르겠습니다.