-
-
Notifications
You must be signed in to change notification settings - Fork 506
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Multiplatform] Migrate ProjectDescription.Target
to support multiple platforms
#5595
Conversation
ProjectDescription.Target
to support multiple platforms
ProjectDescription.Target
to support multiple platformsProjectDescription.Target
to support multiple platforms
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
thanks @waltflanagan
bcb639a
to
15c5268
Compare
f9daf51
to
1a9cc40
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Awesome, thanks for the all the updates @waltflanagan 👍
The introduction of Condition
and CombinationResults
makes things a lot more clearer and easier to follow
I retested the changes against our project and looks like there are no diffs / regressions 🎉
I believe all my feedback points from #5557 (review) have been addressed, thanks again!
15c5268
to
842c4a6
Compare
This covers two scenarios Apply platform filters to transitive dependencies if they exist in intermediate steps Given: A -> (.ios) B and B -> C Then: A -> (.ios) C Remove dependencies if intermediate filters result in a disjoint set Given: A -> (.ios) B and B -> (.macos) C Then: A -> C should have `nil` platform filters, which results it it being removed as a transitive dependency.
…`test` and `build`
…ight `PlatformFilters`
1a9cc40
to
0fa3a5b
Compare
This just resolves like any other multiplatform target now
Very first exposure of multiplatform work in ProjectDescription. All feedback on API design welcome.
Addresses #5515
Short description 📝
Complete adding support for multiple platform targets in Tuist by exposing the API in
ProjectDescription.Target
In order to minimize disruption and maintain source compatibility, we will deprecate the single platform
init
in preference ofinit(destinations:deploymentTargets:)
. We expose an analog ofPlatform
andDeploymentTarget
for source compatibility but they should no longer be relied upon.To support multiplatform targets, we also migrate SPM dependencies via
Dependencies.swift
to use multiplatform targets instead of the single platformFramework_ios
patterns.When generating the resulting
xcodeproj
, platform filters are applied toPBXBuildFile
instances viaLinkGenerator
How to test the changes locally 🧐
Run tests. All should pass.
Contributor checklist ✅
make workspace/lint-fix
Reviewer checklist ✅
changelog:added
,changelog:fixed
, orchangelog:changed
, and the title is usable as a changelog entry