Skip to content

Conversation

@facumenzella
Copy link
Contributor

@facumenzella facumenzella commented Sep 19, 2025

Motivation

We want to have a way to test RC integration using SPM, our main installation method.
Try to keep it clean for ease of maintenance.

Description

  • Add Remote variants for Example projects
  • Rename maestro folders to be Maestro and MaestroRemote instead of rc-maestro.

Now if you run TUIST_RC_LOCAL=false tuist generate this is the output.
Screenshot 2025-09-19 at 13 18 15

The goal is to keep the same command by duplicating the project, but having the same target name.
When running local = false, example projects will use Xcode natives SPM dependency resolver. The other projects will still use tuist resolver.

@emerge-tools
Copy link

emerge-tools bot commented Sep 19, 2025

📸 Snapshot Test

12 modified, 856 unchanged

Name Added Removed Modified Renamed Unchanged Errored Approval
RevenueCat
com.revenuecat.PaywallsTester.mac-native
0 0 11 0 155 0 ⏳ Needs approval
RevenueCat
com.revenuecat.PaywallsTester
0 0 1 0 233 0 ⏳ Needs approval
RevenueCat
com.revenuecat.PaywallsTester.mac-catalyst-optimized-for-mac
0 0 0 0 234 0 N/A
RevenueCat
com.revenuecat.PaywallsTester.mac-catalyst-scaled-to-match-ipad
0 0 0 0 234 0 N/A

🛸 Powered by Emerge Tools

Copy link
Member

@ajpallares ajpallares left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is looking great! Especially for CI, so that we make sure that we're using SPM for tests to closer replicate the most used real-life scenarios.

However, I wonder, I see that the RevenueCat dependency added depends on the main branch.

Image

While that might make sense for some projects like Magic Weather (although it could be argued that it should depend on the latest release), trying to think on our CI, ideally it should depend on the local code as a Swift Package (and not on the remote main branch).

Comment on lines +38 to +39
.package(product: "RevenueCat", type: .runtime),
.package(product: "RevenueCatUI", type: .runtime),
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe we should declare this in TargetDependencies.swift as we have others? (e.g. .revenueCat, .revenueCatUI)

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also, is this .runtime making it point to .main because we declare it like this in Tuist/Package.swift?

.package(
    url: "https://github.com/RevenueCat/purchases-ios",
    branch: "main"
),

If so, what does it use the purchases-ios from main and no the purchases-ios-spm at 3.14.4 also declared in Tuist/Package.swift`

.package(
    url: "https://github.com/RevenueCat/purchases-ios",
    branch: "main"
),
.package(
    url: "https://github.com/RevenueCat/purchases-ios-spm",
    revision: "3.14.4"
),

dependencies: [
.package(product: "RevenueCat", type: .runtime),
.package(product: "RevenueCatUI", type: .runtime),
.package(product: "ReceiptParser", type: .runtime)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I only see receipt parser declared in Tuist/ProjectDescriptionHelpers/TargetDependencies.swift.

/// Returns a ReceiptParser dependency
/// - Returns: A TargetDependency for ReceiptParser
public static var receiptparser: TargetDependency {
    .project(
        target: "ReceiptParser",
        path: .relativeToRoot("Projects/RevenueCat")
    )
}

How will it find it from the remote? (very likely I'm missing something 🙏)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants