Skip to content

Commit 8ad112c

Browse files
committed
fix(target): treat dependencies and buildPhases as optional keys
Xcode 16.2+ omits the 'dependencies' key from project.pbxproj when a target has no dependencies (instead of writing 'dependencies = ();'). This causes parseTarget() to fail with a KeyNotFoundError. Apply the same IsKeyNotFoundError guard already used for 'productType' and 'productReference'. Also guard 'buildPhases' for forward compat. Fixes #330
1 parent 740af34 commit 8ad112c

1 file changed

Lines changed: 8 additions & 2 deletions

File tree

xcodeproject/xcodeproj/target.go

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -129,7 +129,10 @@ func parseTarget(id string, objects serialized.Object) (Target, error) {
129129

130130
dependencyIDs, err := rawTarget.StringSlice("dependencies")
131131
if err != nil {
132-
return Target{}, err
132+
if !serialized.IsKeyNotFoundError(err) {
133+
return Target{}, err
134+
}
135+
dependencyIDs = []string{}
133136
}
134137

135138
var dependencies []TargetDependency
@@ -168,7 +171,10 @@ func parseTarget(id string, objects serialized.Object) (Target, error) {
168171

169172
buildPhaseIDs, err := rawTarget.StringSlice("buildPhases")
170173
if err != nil {
171-
return Target{}, err
174+
if !serialized.IsKeyNotFoundError(err) {
175+
return Target{}, err
176+
}
177+
buildPhaseIDs = []string{}
172178
}
173179

174180
return Target{

0 commit comments

Comments
 (0)