-
-
Notifications
You must be signed in to change notification settings - Fork 309
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
feat: Introduce the new Xcode 16 models PBXFileSystemSynchronizedRootGroup
and PBXFileSystemSynchronizedBuildFileExceptionSet
#827
Conversation
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 for adding this @pepicrft
Worth adding a fixture to test out reading / writing.
From a quick test it seems there might be a few missing integrations to wire up the new models up as it still doesn't recognise them when attempt to read an Xcode 16 project that uses the new folder references.
failed: caught error: "The element PBXFileSystemSynchronizedRootGroup is not supported."
2c206e8
to
e25feb8
Compare
@kwridan I uncovered the missing pieces through tests and fixed some minor issues. I'd appreciate a look when you have some spare time. |
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 for the updates @pepicrft - XcodeProj now successfully reads / write a sample Xcode 16 project 🎉
I spotted a few missing bits from testing that are cause diffs after a read / write.
Sources/XcodeProj/Objects/Files/PBXFileSystemSynchronizedRootGroup.swift
Outdated
Show resolved
Hide resolved
@kwridan this should be ready for another look. |
eb64294
to
5f6c53b
Compare
…dencies attribute of PBXTarget
5f6c53b
to
fe6311f
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 thank you @pepicrft 🎉
There are a few additional properties that can be set but can be done as a follow up:
compilerFlags
platformFilters
Sources/XcodeProj/Objects/Files/PBXFileSystemSynchronizedRootGroup.swift
Outdated
Show resolved
Hide resolved
…roup.swift Co-authored-by: Kas <[email protected]>
I'll add those as part of this PR. Thanks for the review @kwridan |
PBXFileSystemSynchronizedRootGroup
and PBXFileSystemSynchronizedBuildFileExceptionSet
PBXFileSystemSynchronizedRootGroup
and PBXFileSystemSynchronizedBuildFileExceptionSet
@kwridan could you remind me of where platform filters are used? I also noticed that there's another object type to define exception for files referenced by copy build phases. I created an issue to tackle that in a follow-up PR. |
Apple is introducing two new models,
PBXFileSystemSynchronizedRootGroup
andPBXFileSystemSynchronizedBuildFileExceptionSet
, to reduce Git conflicts. Those types allow targets to reference a folder, whose files get automatically synchronized instead of creating references for every single file.This PR adds those models along with the serialization logic. Once we use them from Tuist, I'll get ideas for convenient APIs that we might consider pushing down to the XcodeProj layer.