xcodeproj 0.18.0 → 0.19.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/xcodeproj +5 -5
- data/lib/xcodeproj.rb +0 -2
- data/lib/xcodeproj/command.rb +26 -17
- data/lib/xcodeproj/command/project_diff.rb +8 -11
- data/lib/xcodeproj/command/show.rb +8 -10
- data/lib/xcodeproj/command/sort.rb +4 -7
- data/lib/xcodeproj/command/target_diff.rb +4 -5
- data/lib/xcodeproj/config.rb +64 -57
- data/lib/xcodeproj/config/other_linker_flags_parser.rb +62 -0
- data/lib/xcodeproj/constants.rb +31 -30
- data/lib/xcodeproj/differ.rb +5 -9
- data/lib/xcodeproj/gem_version.rb +1 -2
- data/lib/xcodeproj/helper.rb +5 -4
- data/lib/xcodeproj/plist_helper.rb +46 -11
- data/lib/xcodeproj/project.rb +16 -20
- data/lib/xcodeproj/project/case_converter.rb +59 -0
- data/lib/xcodeproj/project/object.rb +40 -30
- data/lib/xcodeproj/project/object/build_configuration.rb +1 -5
- data/lib/xcodeproj/project/object/build_file.rb +1 -4
- data/lib/xcodeproj/project/object/build_phase.rb +2 -13
- data/lib/xcodeproj/project/object/build_rule.rb +0 -3
- data/lib/xcodeproj/project/object/configuration_list.rb +0 -4
- data/lib/xcodeproj/project/object/container_item_proxy.rb +2 -4
- data/lib/xcodeproj/project/object/file_reference.rb +3 -6
- data/lib/xcodeproj/project/object/group.rb +6 -14
- data/lib/xcodeproj/project/object/helpers/file_references_factory.rb +64 -13
- data/lib/xcodeproj/project/object/helpers/groupable_helper.rb +4 -6
- data/lib/xcodeproj/project/object/native_target.rb +18 -29
- data/lib/xcodeproj/project/object/reference_proxy.rb +0 -4
- data/lib/xcodeproj/project/object/root_object.rb +4 -8
- data/lib/xcodeproj/project/object/target_dependency.rb +1 -4
- data/lib/xcodeproj/project/object_attributes.rb +76 -33
- data/lib/xcodeproj/project/object_dictionary.rb +76 -63
- data/lib/xcodeproj/project/object_list.rb +5 -9
- data/lib/xcodeproj/project/project_helper.rb +2 -7
- data/lib/xcodeproj/project/xcproj_helper.rb +0 -2
- data/lib/xcodeproj/scheme.rb +12 -15
- data/lib/xcodeproj/user_interface.rb +0 -4
- data/lib/xcodeproj/workspace.rb +36 -23
- data/lib/xcodeproj/workspace/file_reference.rb +3 -3
- data/lib/xcodeproj/xcodebuild_helper.rb +0 -6
- metadata +20 -18
@@ -1,7 +1,6 @@
|
|
1
1
|
module Xcodeproj
|
2
2
|
class Project
|
3
3
|
module Object
|
4
|
-
|
5
4
|
# Apparently a proxy for another object which might belong another
|
6
5
|
# project contained in the same workspace of the project document.
|
7
6
|
#
|
@@ -19,7 +18,6 @@ module Xcodeproj
|
|
19
18
|
# xcodeproj to raise because ti can't find the UUID.
|
20
19
|
#
|
21
20
|
class PBXContainerItemProxy < AbstractObject
|
22
|
-
|
23
21
|
# @!group Attributes
|
24
22
|
|
25
23
|
# @return [String] apparently the UUID of the root object
|
@@ -38,7 +36,8 @@ module Xcodeproj
|
|
38
36
|
# If this assumption is incorrect, there could be loss of
|
39
37
|
# information opening and saving an existing project.
|
40
38
|
#
|
41
|
-
#
|
39
|
+
# @todo This is the external reference that 'contains' other proxy
|
40
|
+
# items.
|
42
41
|
attribute :container_portal, String
|
43
42
|
|
44
43
|
# @return [String] the type of the proxy.
|
@@ -66,7 +65,6 @@ module Xcodeproj
|
|
66
65
|
# the proxy.
|
67
66
|
#
|
68
67
|
attribute :remote_info, String
|
69
|
-
|
70
68
|
end
|
71
69
|
end
|
72
70
|
end
|
@@ -3,11 +3,9 @@ require 'xcodeproj/project/object/helpers/groupable_helper'
|
|
3
3
|
module Xcodeproj
|
4
4
|
class Project
|
5
5
|
module Object
|
6
|
-
|
7
6
|
# This class represents a reference to a file in the file system.
|
8
7
|
#
|
9
8
|
class PBXFileReference < AbstractObject
|
10
|
-
|
11
9
|
# @!group Attributes
|
12
10
|
|
13
11
|
# @return [String] the name of the reference, often not present.
|
@@ -245,7 +243,7 @@ module Xcodeproj
|
|
245
243
|
#
|
246
244
|
def project_reference_metadata
|
247
245
|
project.root_object.project_references.find do |project_reference|
|
248
|
-
project_reference[
|
246
|
+
project_reference[:project_ref] == self
|
249
247
|
end
|
250
248
|
end
|
251
249
|
|
@@ -259,7 +257,7 @@ module Xcodeproj
|
|
259
257
|
def proxy_containers
|
260
258
|
project.objects.select do |object|
|
261
259
|
object.isa == 'PBXContainerItemProxy' &&
|
262
|
-
object.container_portal ==
|
260
|
+
object.container_portal == uuid
|
263
261
|
end
|
264
262
|
end
|
265
263
|
|
@@ -313,14 +311,13 @@ module Xcodeproj
|
|
313
311
|
if project_reference = project_reference_metadata
|
314
312
|
file_reference_proxies.each(&:remove_from_project)
|
315
313
|
target_dependency_proxies.each(&:remove_from_project)
|
316
|
-
project_reference[
|
314
|
+
project_reference[:product_group].remove_from_project
|
317
315
|
project.root_object.project_references.delete(project_reference)
|
318
316
|
end
|
319
317
|
super
|
320
318
|
end
|
321
319
|
|
322
320
|
#---------------------------------------------------------------------#
|
323
|
-
|
324
321
|
end
|
325
322
|
end
|
326
323
|
end
|
@@ -4,12 +4,10 @@ require 'xcodeproj/project/object/helpers/file_references_factory'
|
|
4
4
|
module Xcodeproj
|
5
5
|
class Project
|
6
6
|
module Object
|
7
|
-
|
8
7
|
# This class represents a group. A group can contain other groups
|
9
8
|
# (PBXGroup) and file references (PBXFileReference).
|
10
9
|
#
|
11
10
|
class PBXGroup < AbstractObject
|
12
|
-
|
13
11
|
# @!group Attributes
|
14
12
|
|
15
13
|
# @return [ObjectList<PBXGroup, PBXFileReference>]
|
@@ -78,7 +76,6 @@ module Xcodeproj
|
|
78
76
|
#
|
79
77
|
attribute :comments, String
|
80
78
|
|
81
|
-
|
82
79
|
public
|
83
80
|
|
84
81
|
# @!group Helpers
|
@@ -223,7 +220,7 @@ module Xcodeproj
|
|
223
220
|
def new_reference(path, source_tree = :group)
|
224
221
|
FileReferencesFactory.new_reference(self, path, source_tree)
|
225
222
|
end
|
226
|
-
|
223
|
+
alias_method :new_file, :new_reference
|
227
224
|
|
228
225
|
# Creates a file reference to a static library and adds it to the
|
229
226
|
# group.
|
@@ -280,7 +277,7 @@ module Xcodeproj
|
|
280
277
|
def clear
|
281
278
|
children.objects.each(&:remove_from_project)
|
282
279
|
end
|
283
|
-
|
280
|
+
alias_method :remove_children_recursively, :clear
|
284
281
|
|
285
282
|
# Traverses the children groups and finds the children with the given
|
286
283
|
# path, optionally, creating any needed group. If the given path is
|
@@ -306,7 +303,7 @@ module Xcodeproj
|
|
306
303
|
return self unless path
|
307
304
|
path = path.split('/') unless path.is_a?(Array)
|
308
305
|
child_name = path.shift
|
309
|
-
child = children.find{ |c| c.display_name == child_name }
|
306
|
+
child = children.find { |c| c.display_name == child_name }
|
310
307
|
if child.nil?
|
311
308
|
if should_create
|
312
309
|
child = new_group(child_name)
|
@@ -351,7 +348,7 @@ module Xcodeproj
|
|
351
348
|
if extname_x != extname_y
|
352
349
|
extname_x <=> extname_y
|
353
350
|
else
|
354
|
-
File.basename(x.display_name,
|
351
|
+
File.basename(x.display_name, '.*') <=> File.basename(y.display_name, '.*')
|
355
352
|
end
|
356
353
|
else
|
357
354
|
0
|
@@ -364,7 +361,7 @@ module Xcodeproj
|
|
364
361
|
# @return [void]
|
365
362
|
#
|
366
363
|
def sort_recursively_by_type
|
367
|
-
groups.each
|
364
|
+
groups.each(&:sort_recursively_by_type)
|
368
365
|
sort_by_type
|
369
366
|
end
|
370
367
|
|
@@ -408,7 +405,7 @@ module Xcodeproj
|
|
408
405
|
end
|
409
406
|
end
|
410
407
|
|
411
|
-
result = File.basename(x.display_name,
|
408
|
+
result = File.basename(x.display_name, '.*') <=> File.basename(y.display_name, '.*')
|
412
409
|
if result.zero?
|
413
410
|
File.extname(x.display_name) <=> File.extname(y.display_name)
|
414
411
|
else
|
@@ -423,13 +420,11 @@ module Xcodeproj
|
|
423
420
|
# This class is used to gather localized files into one entry.
|
424
421
|
#
|
425
422
|
class PBXVariantGroup < PBXGroup
|
426
|
-
|
427
423
|
# @!group Attributes
|
428
424
|
|
429
425
|
# @return [String] the file type guessed by Xcode.
|
430
426
|
#
|
431
427
|
attribute :last_known_file_type, String
|
432
|
-
|
433
428
|
end
|
434
429
|
|
435
430
|
#-----------------------------------------------------------------------#
|
@@ -440,7 +435,6 @@ module Xcodeproj
|
|
440
435
|
# Used to contain the different versions of a `xcdatamodel`.
|
441
436
|
#
|
442
437
|
class XCVersionGroup < PBXGroup
|
443
|
-
|
444
438
|
# @!group Attributes
|
445
439
|
|
446
440
|
# @return [PBXFileReference] the reference to the current version.
|
@@ -450,11 +444,9 @@ module Xcodeproj
|
|
450
444
|
# @return [String] the type of the versioned resource.
|
451
445
|
#
|
452
446
|
attribute :version_group_type, String, 'wrapper.xcdatamodel'
|
453
|
-
|
454
447
|
end
|
455
448
|
|
456
449
|
#-----------------------------------------------------------------------#
|
457
|
-
|
458
450
|
end
|
459
451
|
end
|
460
452
|
end
|
@@ -5,7 +5,6 @@ module Xcodeproj
|
|
5
5
|
module Object
|
6
6
|
class FileReferencesFactory
|
7
7
|
class << self
|
8
|
-
|
9
8
|
# Creates a new reference with the given path and adds it to the
|
10
9
|
# given group. The reference is configured according to the extension
|
11
10
|
# of the path.
|
@@ -23,11 +22,14 @@ module Xcodeproj
|
|
23
22
|
# @return [PBXFileReference, XCVersionGroup] The new reference.
|
24
23
|
#
|
25
24
|
def new_reference(group, path, source_tree)
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
25
|
+
ref = case File.extname(path).downcase
|
26
|
+
when '.xcdatamodeld'
|
27
|
+
new_xcdatamodeld(group, path, source_tree)
|
28
|
+
when '.xcodeproj'
|
29
|
+
new_subproject(group, path, source_tree)
|
30
|
+
else
|
31
|
+
new_file_reference(group, path, source_tree)
|
32
|
+
end
|
31
33
|
|
32
34
|
configure_defaults_for_file_reference(ref)
|
33
35
|
ref
|
@@ -69,11 +71,10 @@ module Xcodeproj
|
|
69
71
|
def new_bundle(group, product_name)
|
70
72
|
ref = new_reference(group, "#{product_name}.bundle", :built_products)
|
71
73
|
ref.include_in_index = '0'
|
72
|
-
ref.set_explicit_file_type(
|
74
|
+
ref.set_explicit_file_type('wrapper.cfbundle')
|
73
75
|
ref
|
74
76
|
end
|
75
77
|
|
76
|
-
|
77
78
|
private
|
78
79
|
|
79
80
|
# @group Private Helpers
|
@@ -135,8 +136,7 @@ module Xcodeproj
|
|
135
136
|
if path.exist?
|
136
137
|
path.children.each do |child_path|
|
137
138
|
if File.extname(child_path) == '.xcdatamodel'
|
138
|
-
|
139
|
-
last_child_ref = child_ref
|
139
|
+
new_file_reference(ref, child_path, :group)
|
140
140
|
elsif File.basename(child_path) == '.xccurrentversion'
|
141
141
|
full_path = path + File.basename(child_path)
|
142
142
|
xccurrentversion = Xcodeproj::PlistHelper.read(full_path)
|
@@ -146,7 +146,7 @@ module Xcodeproj
|
|
146
146
|
|
147
147
|
if current_version_name
|
148
148
|
ref.current_version = ref.children.find do |obj|
|
149
|
-
|
149
|
+
obj.path.split('/').last == current_version_name
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
@@ -154,6 +154,59 @@ module Xcodeproj
|
|
154
154
|
ref
|
155
155
|
end
|
156
156
|
|
157
|
+
# Creates a file reference to another Xcode subproject and setups the
|
158
|
+
# proxies to the targets.
|
159
|
+
#
|
160
|
+
# @param [PBXGroup] group
|
161
|
+
# The group to which to add the reference.
|
162
|
+
#
|
163
|
+
# @param [#to_s] path
|
164
|
+
# The, preferably absolute, path of the reference.
|
165
|
+
#
|
166
|
+
# @param [Symbol] source_tree
|
167
|
+
# The source tree key to use to configure the path (@see
|
168
|
+
# GroupableHelper::SOURCE_TREES_BY_KEY).
|
169
|
+
#
|
170
|
+
# @note To analyze the targets the given project is read and thus
|
171
|
+
# it should already exist in the disk.
|
172
|
+
#
|
173
|
+
# @return [PBXFileReference] The new file reference.
|
174
|
+
#
|
175
|
+
def new_subproject(group, path, source_tree)
|
176
|
+
ref = new_file_reference(group, path, source_tree)
|
177
|
+
ref.include_in_index = nil
|
178
|
+
|
179
|
+
product_group_ref = group.project.new(PBXGroup)
|
180
|
+
product_group_ref.name = 'Products'
|
181
|
+
product_group_ref.source_tree = '<group>'
|
182
|
+
|
183
|
+
subproj = Project.open(path)
|
184
|
+
subproj.products_group.files.each do |product_reference|
|
185
|
+
container_proxy = group.project.new(PBXContainerItemProxy)
|
186
|
+
container_proxy.container_portal = ref.uuid
|
187
|
+
container_proxy.proxy_type = '2'
|
188
|
+
container_proxy.remote_global_id_string = product_reference.uuid
|
189
|
+
container_proxy.remote_info = 'Subproject'
|
190
|
+
|
191
|
+
reference_proxy = group.project.new(PBXReferenceProxy)
|
192
|
+
extension = File.extname(product_reference.path)[1..-1]
|
193
|
+
reference_proxy.file_type = Constants::FILE_TYPES_BY_EXTENSION[extension]
|
194
|
+
reference_proxy.path = product_reference.path
|
195
|
+
reference_proxy.remote_ref = container_proxy
|
196
|
+
reference_proxy.source_tree = 'BUILT_PRODUCTS_DIR'
|
197
|
+
|
198
|
+
product_group_ref << reference_proxy
|
199
|
+
end
|
200
|
+
|
201
|
+
attribute = PBXProject.references_by_keys_attributes.find { |attrb| attrb.name == :project_references }
|
202
|
+
project_reference = ObjectDictionary.new(attribute, group.project.root_object)
|
203
|
+
project_reference[:project_ref] = ref
|
204
|
+
project_reference[:product_group] = product_group_ref
|
205
|
+
group.project.root_object.project_references << project_reference
|
206
|
+
|
207
|
+
ref
|
208
|
+
end
|
209
|
+
|
157
210
|
# Configures a file reference according to the extension to math
|
158
211
|
# Xcode behaviour.
|
159
212
|
#
|
@@ -177,10 +230,8 @@ module Xcodeproj
|
|
177
230
|
end
|
178
231
|
|
179
232
|
#-------------------------------------------------------------------#
|
180
|
-
|
181
233
|
end
|
182
234
|
end
|
183
235
|
end
|
184
236
|
end
|
185
237
|
end
|
186
|
-
|
@@ -3,7 +3,6 @@ module Xcodeproj
|
|
3
3
|
module Object
|
4
4
|
class GroupableHelper
|
5
5
|
class << self
|
6
|
-
|
7
6
|
# @param [PBXGroup, PBXFileReference] object
|
8
7
|
# The object to analyze.
|
9
8
|
#
|
@@ -12,15 +11,15 @@ module Xcodeproj
|
|
12
11
|
def parent(object)
|
13
12
|
referrers = object.referrers.uniq
|
14
13
|
if referrers.count > 1
|
15
|
-
referrers = referrers.select{ |obj| obj.isa == 'PBXGroup' }
|
14
|
+
referrers = referrers.select { |obj| obj.isa == 'PBXGroup' }
|
16
15
|
end
|
17
16
|
|
18
17
|
if referrers.count == 0
|
19
|
-
raise
|
18
|
+
raise '[Xcodeproj] Consistency issue: no parent ' \
|
20
19
|
"for object `#{object.display_name}`: "\
|
21
20
|
"`#{object.referrers.join('`, `')}`"
|
22
21
|
elsif referrers.count > 1
|
23
|
-
raise
|
22
|
+
raise '[Xcodeproj] Consistency issue: unexpected multiple parents ' \
|
24
23
|
"for object `#{object.display_name}`: "\
|
25
24
|
"#{object.referrers}"
|
26
25
|
end
|
@@ -178,7 +177,7 @@ module Xcodeproj
|
|
178
177
|
|
179
178
|
if source_tree == SOURCE_TREES_BY_KEY[:absolute]
|
180
179
|
unless path.absolute?
|
181
|
-
raise
|
180
|
+
raise '[Xcodeproj] Attempt to set a relative path with an ' \
|
182
181
|
"absolute source tree: `#{path}`"
|
183
182
|
end
|
184
183
|
object.path = path.to_s
|
@@ -220,7 +219,6 @@ module Xcodeproj
|
|
220
219
|
end
|
221
220
|
|
222
221
|
#-------------------------------------------------------------------#
|
223
|
-
|
224
222
|
end
|
225
223
|
end
|
226
224
|
end
|
@@ -1,9 +1,7 @@
|
|
1
1
|
module Xcodeproj
|
2
2
|
class Project
|
3
3
|
module Object
|
4
|
-
|
5
4
|
class AbstractTarget < AbstractObject
|
6
|
-
|
7
5
|
# @!group Attributes
|
8
6
|
|
9
7
|
# @return [String] The name of the Target.
|
@@ -31,7 +29,6 @@ module Xcodeproj
|
|
31
29
|
#
|
32
30
|
has_many :dependencies, PBXTargetDependency
|
33
31
|
|
34
|
-
|
35
32
|
public
|
36
33
|
|
37
34
|
# @!group Helpers
|
@@ -54,7 +51,7 @@ module Xcodeproj
|
|
54
51
|
def resolved_build_setting(key)
|
55
52
|
target_settings = build_configuration_list.get_setting(key)
|
56
53
|
project_settings = project.build_configuration_list.get_setting(key)
|
57
|
-
target_settings.merge(project_settings) do |
|
54
|
+
target_settings.merge(project_settings) do |_key, target_val, proj_val|
|
58
55
|
target_val || proj_val
|
59
56
|
end
|
60
57
|
end
|
@@ -203,7 +200,7 @@ module Xcodeproj
|
|
203
200
|
container_proxy.container_portal = project.root_object.uuid
|
204
201
|
else
|
205
202
|
subproject_reference = project.reference_for_path(target.project.path)
|
206
|
-
raise ArgumentError,
|
203
|
+
raise ArgumentError, 'add_dependency got target that belongs to a project is not this project and is not a subproject of this project' unless subproject_reference
|
207
204
|
container_proxy.container_portal = subproject_reference.uuid
|
208
205
|
end
|
209
206
|
container_proxy.proxy_type = '1'
|
@@ -245,7 +242,6 @@ module Xcodeproj
|
|
245
242
|
phase
|
246
243
|
end
|
247
244
|
|
248
|
-
|
249
245
|
public
|
250
246
|
|
251
247
|
# @!group System frameworks
|
@@ -280,7 +276,7 @@ module Xcodeproj
|
|
280
276
|
path_sdk_name = 'MacOSX'
|
281
277
|
path_sdk_version = sdk_version || Constants::LAST_KNOWN_OSX_SDK
|
282
278
|
else
|
283
|
-
raise
|
279
|
+
raise 'Unknown platform for target'
|
284
280
|
end
|
285
281
|
|
286
282
|
path = "Platforms/#{path_sdk_name}.platform/Developer/SDKs/#{path_sdk_name}#{path_sdk_version}.sdk/System/Library/Frameworks/#{name}.framework"
|
@@ -291,7 +287,7 @@ module Xcodeproj
|
|
291
287
|
ref
|
292
288
|
end
|
293
289
|
end
|
294
|
-
|
290
|
+
alias_method :add_system_frameworks, :add_system_framework
|
295
291
|
|
296
292
|
# Adds a file reference for one or more system libraries to the project
|
297
293
|
# if needed and adds them to the Frameworks build phases.
|
@@ -304,14 +300,15 @@ module Xcodeproj
|
|
304
300
|
def add_system_library(names)
|
305
301
|
Array(names).each do |name|
|
306
302
|
path = "usr/lib/lib#{name}.dylib"
|
307
|
-
|
308
|
-
|
303
|
+
files = project.frameworks_group.files
|
304
|
+
unless reference = files.find { |ref| ref.path == path }
|
305
|
+
reference = project.frameworks_group.new_file(path, :sdk_root)
|
309
306
|
end
|
310
|
-
frameworks_build_phase.add_file_reference(
|
311
|
-
|
307
|
+
frameworks_build_phase.add_file_reference(reference, true)
|
308
|
+
reference
|
312
309
|
end
|
313
310
|
end
|
314
|
-
|
311
|
+
alias_method :add_system_libraries, :add_system_library
|
315
312
|
|
316
313
|
public
|
317
314
|
|
@@ -325,11 +322,10 @@ module Xcodeproj
|
|
325
322
|
{
|
326
323
|
display_name => {
|
327
324
|
'Build Phases' => build_phases.map(&:pretty_print),
|
328
|
-
'Build Configurations' => build_configurations.map(&:pretty_print)
|
329
|
-
}
|
325
|
+
'Build Configurations' => build_configurations.map(&:pretty_print),
|
326
|
+
},
|
330
327
|
}
|
331
328
|
end
|
332
|
-
|
333
329
|
end
|
334
330
|
|
335
331
|
#-----------------------------------------------------------------------#
|
@@ -337,7 +333,6 @@ module Xcodeproj
|
|
337
333
|
# Represents a target handled by Xcode.
|
338
334
|
#
|
339
335
|
class PBXNativeTarget < AbstractTarget
|
340
|
-
|
341
336
|
# @!group Attributes
|
342
337
|
|
343
338
|
# @return [PBXBuildRule] the build rules of this target.
|
@@ -365,7 +360,6 @@ module Xcodeproj
|
|
365
360
|
#
|
366
361
|
has_many :build_phases, AbstractBuildPhase
|
367
362
|
|
368
|
-
|
369
363
|
public
|
370
364
|
|
371
365
|
# @!group Helpers
|
@@ -374,7 +368,8 @@ module Xcodeproj
|
|
374
368
|
# @return [Symbol] The type of the target expressed as a symbol.
|
375
369
|
#
|
376
370
|
def symbol_type
|
377
|
-
pair = Constants::PRODUCT_TYPE_UTI.find { |
|
371
|
+
pair = Constants::PRODUCT_TYPE_UTI.find { |_key, value| value == product_type }
|
372
|
+
return nil if pair.nil?
|
378
373
|
pair.first
|
379
374
|
end
|
380
375
|
|
@@ -396,7 +391,7 @@ module Xcodeproj
|
|
396
391
|
|
397
392
|
extension = File.extname(file.path)
|
398
393
|
header_extensions = Constants::HEADER_FILES_EXTENSIONS
|
399
|
-
if
|
394
|
+
if header_extensions.include?(extension)
|
400
395
|
headers_build_phase.files << build_file
|
401
396
|
else
|
402
397
|
if compiler_flags && !compiler_flags.empty?
|
@@ -471,7 +466,7 @@ module Xcodeproj
|
|
471
466
|
def frameworks_build_phase
|
472
467
|
phase = build_phases.find { |bp| bp.class == PBXFrameworksBuildPhase }
|
473
468
|
unless phase
|
474
|
-
phase= project.new(PBXFrameworksBuildPhase)
|
469
|
+
phase = project.new(PBXFrameworksBuildPhase)
|
475
470
|
build_phases << phase
|
476
471
|
end
|
477
472
|
phase
|
@@ -492,7 +487,6 @@ module Xcodeproj
|
|
492
487
|
phase
|
493
488
|
end
|
494
489
|
|
495
|
-
|
496
490
|
public
|
497
491
|
|
498
492
|
# @!group AbstractObject Hooks
|
@@ -503,7 +497,7 @@ module Xcodeproj
|
|
503
497
|
#
|
504
498
|
# Build phases are not sorted as they order is relevant.
|
505
499
|
#
|
506
|
-
def sort(
|
500
|
+
def sort(_options = nil)
|
507
501
|
attributes_to_sort = to_many_attributes.reject { |attr| attr.name == :build_phases }
|
508
502
|
attributes_to_sort.each do |attrb|
|
509
503
|
list = attrb.get_value(self)
|
@@ -521,7 +515,6 @@ module Xcodeproj
|
|
521
515
|
# @todo Apparently it can't have build rules.
|
522
516
|
#
|
523
517
|
class PBXAggregateTarget < AbstractTarget
|
524
|
-
|
525
518
|
# @!group Attributes
|
526
519
|
|
527
520
|
# @return [PBXBuildRule] the build phases of the target.
|
@@ -530,8 +523,7 @@ module Xcodeproj
|
|
530
523
|
# PBXShellScriptBuildPhase can appear multiple times in a
|
531
524
|
# target.
|
532
525
|
#
|
533
|
-
has_many :build_phases, [
|
534
|
-
|
526
|
+
has_many :build_phases, [PBXCopyFilesBuildPhase, PBXShellScriptBuildPhase]
|
535
527
|
end
|
536
528
|
|
537
529
|
#-----------------------------------------------------------------------#
|
@@ -542,7 +534,6 @@ module Xcodeproj
|
|
542
534
|
# present.
|
543
535
|
#
|
544
536
|
class PBXLegacyTarget < AbstractTarget
|
545
|
-
|
546
537
|
# @!group Attributes
|
547
538
|
|
548
539
|
# @return [String] e.g "Dir"
|
@@ -568,11 +559,9 @@ module Xcodeproj
|
|
568
559
|
# target.
|
569
560
|
#
|
570
561
|
has_many :build_phases, AbstractBuildPhase
|
571
|
-
|
572
562
|
end
|
573
563
|
|
574
564
|
#-----------------------------------------------------------------------#
|
575
|
-
|
576
565
|
end
|
577
566
|
end
|
578
567
|
end
|