cocoapods 1.0.1 → 1.1.0.beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +107 -0
- data/lib/cocoapods/command.rb +1 -0
- data/lib/cocoapods/command/repo/push.rb +26 -5
- data/lib/cocoapods/command/setup.rb +2 -1
- data/lib/cocoapods/downloader.rb +20 -0
- data/lib/cocoapods/downloader/cache.rb +1 -0
- data/lib/cocoapods/gem_version.rb +1 -1
- data/lib/cocoapods/generator/acknowledgements/plist.rb +1 -0
- data/lib/cocoapods/generator/xcconfig/aggregate_xcconfig.rb +9 -2
- data/lib/cocoapods/generator/xcconfig/xcconfig_helper.rb +5 -4
- data/lib/cocoapods/installer.rb +41 -205
- data/lib/cocoapods/installer/analyzer.rb +65 -1
- data/lib/cocoapods/installer/analyzer/pod_variant.rb +9 -3
- data/lib/cocoapods/installer/analyzer/target_inspector.rb +24 -0
- data/lib/cocoapods/installer/user_project_integrator/target_integrator.rb +23 -6
- data/lib/cocoapods/installer/xcode.rb +7 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator.rb +265 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/aggregate_target_installer.rb +202 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/file_references_installer.rb +314 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/pod_target_installer.rb +397 -0
- data/lib/cocoapods/installer/xcode/pods_project_generator/target_installer.rb +214 -0
- data/lib/cocoapods/resolver.rb +1 -2
- data/lib/cocoapods/target/aggregate_target.rb +19 -0
- data/lib/cocoapods/target/pod_target.rb +15 -2
- data/lib/cocoapods/user_interface.rb +6 -1
- data/lib/cocoapods/user_interface/error_report.rb +7 -0
- data/lib/cocoapods/user_interface/inspector_reporter.rb +109 -0
- data/lib/cocoapods/validator.rb +15 -7
- metadata +42 -19
- data/lib/cocoapods/installer/file_references_installer.rb +0 -310
- data/lib/cocoapods/installer/target_installer.rb +0 -210
- data/lib/cocoapods/installer/target_installer/aggregate_target_installer.rb +0 -191
- data/lib/cocoapods/installer/target_installer/pod_target_installer.rb +0 -389
@@ -1,310 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
class Installer
|
3
|
-
# Controller class responsible of installing the file references of the
|
4
|
-
# specifications in the Pods project.
|
5
|
-
#
|
6
|
-
class FileReferencesInstaller
|
7
|
-
# @return [Sandbox] The sandbox of the installation.
|
8
|
-
#
|
9
|
-
attr_reader :sandbox
|
10
|
-
|
11
|
-
# @return [Array<PodTarget>] The pod targets of the installation.
|
12
|
-
#
|
13
|
-
attr_reader :pod_targets
|
14
|
-
|
15
|
-
# @return [Project] The Pods project.
|
16
|
-
#
|
17
|
-
attr_reader :pods_project
|
18
|
-
|
19
|
-
# Initialize a new instance
|
20
|
-
#
|
21
|
-
# @param [Sandbox] sandbox @see sandbox
|
22
|
-
# @param [Array<PodTarget>] pod_targets @see pod_targets
|
23
|
-
# @param [Project] pods_project @see pod_project
|
24
|
-
#
|
25
|
-
def initialize(sandbox, pod_targets, pods_project)
|
26
|
-
@sandbox = sandbox
|
27
|
-
@pod_targets = pod_targets
|
28
|
-
@pods_project = pods_project
|
29
|
-
end
|
30
|
-
|
31
|
-
# Installs the file references.
|
32
|
-
#
|
33
|
-
# @return [void]
|
34
|
-
#
|
35
|
-
def install!
|
36
|
-
refresh_file_accessors
|
37
|
-
add_source_files_references
|
38
|
-
add_frameworks_bundles
|
39
|
-
add_vendored_libraries
|
40
|
-
add_resources
|
41
|
-
link_headers
|
42
|
-
end
|
43
|
-
|
44
|
-
#-----------------------------------------------------------------------#
|
45
|
-
|
46
|
-
private
|
47
|
-
|
48
|
-
# @!group Installation Steps
|
49
|
-
|
50
|
-
# Reads the file accessors contents from the file system.
|
51
|
-
#
|
52
|
-
# @note The contents of the file accessors are modified by the clean
|
53
|
-
# step of the #{PodSourceInstaller} and by the pre install hooks.
|
54
|
-
#
|
55
|
-
# @return [void]
|
56
|
-
#
|
57
|
-
def refresh_file_accessors
|
58
|
-
file_accessors.each do |fa|
|
59
|
-
fa.path_list.read_file_system
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
# Adds the source files of the Pods to the Pods project.
|
64
|
-
#
|
65
|
-
# @note The source files are grouped by Pod and in turn by subspec
|
66
|
-
# (recursively).
|
67
|
-
#
|
68
|
-
# @return [void]
|
69
|
-
#
|
70
|
-
def add_source_files_references
|
71
|
-
UI.message '- Adding source files to Pods project' do
|
72
|
-
add_file_accessors_paths_to_pods_group(:source_files, nil, true)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
# Adds the bundled frameworks to the Pods project
|
77
|
-
#
|
78
|
-
# @return [void]
|
79
|
-
#
|
80
|
-
def add_frameworks_bundles
|
81
|
-
UI.message '- Adding frameworks to Pods project' do
|
82
|
-
add_file_accessors_paths_to_pods_group(:vendored_frameworks, :frameworks)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
# Adds the bundled libraries to the Pods project
|
87
|
-
#
|
88
|
-
# @return [void]
|
89
|
-
#
|
90
|
-
def add_vendored_libraries
|
91
|
-
UI.message '- Adding libraries to Pods project' do
|
92
|
-
add_file_accessors_paths_to_pods_group(:vendored_libraries, :frameworks)
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
# Adds the resources of the Pods to the Pods project.
|
97
|
-
#
|
98
|
-
# @note The source files are grouped by Pod and in turn by subspec
|
99
|
-
# (recursively) in the resources group.
|
100
|
-
#
|
101
|
-
# @return [void]
|
102
|
-
#
|
103
|
-
def add_resources
|
104
|
-
UI.message '- Adding resources to Pods project' do
|
105
|
-
add_file_accessors_paths_to_pods_group(:resources, :resources, true)
|
106
|
-
add_file_accessors_paths_to_pods_group(:resource_bundle_files, :resources, true)
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
# Creates the link to the headers of the Pod in the sandbox.
|
111
|
-
#
|
112
|
-
# @return [void]
|
113
|
-
#
|
114
|
-
def link_headers
|
115
|
-
UI.message '- Linking headers' do
|
116
|
-
pod_targets.each do |pod_target|
|
117
|
-
pod_target.file_accessors.each do |file_accessor|
|
118
|
-
framework_exp = /\.framework\//
|
119
|
-
headers_sandbox = Pathname.new(file_accessor.spec.root.name)
|
120
|
-
|
121
|
-
# When integrating Pod as frameworks, built Pods are built into
|
122
|
-
# frameworks, whose headers are included inside the built
|
123
|
-
# framework. Those headers do not need to be linked from the
|
124
|
-
# sandbox.
|
125
|
-
unless pod_target.requires_frameworks? && pod_target.should_build?
|
126
|
-
pod_target.build_headers.add_search_path(headers_sandbox, pod_target.platform)
|
127
|
-
sandbox.public_headers.add_search_path(headers_sandbox, pod_target.platform)
|
128
|
-
|
129
|
-
header_mappings(headers_sandbox, file_accessor, file_accessor.headers).each do |namespaced_path, files|
|
130
|
-
pod_target.build_headers.add_files(namespaced_path, files.reject { |f| f.to_path =~ framework_exp })
|
131
|
-
end
|
132
|
-
|
133
|
-
header_mappings(headers_sandbox, file_accessor, file_accessor.public_headers).each do |namespaced_path, files|
|
134
|
-
sandbox.public_headers.add_files(namespaced_path, files.reject { |f| f.to_path =~ framework_exp })
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
|
-
unless pod_target.requires_frameworks?
|
139
|
-
vendored_frameworks_header_mappings(headers_sandbox, file_accessor).each do |namespaced_path, files|
|
140
|
-
sandbox.public_headers.add_files(namespaced_path, files)
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
144
|
-
end
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
#-----------------------------------------------------------------------#
|
149
|
-
|
150
|
-
private
|
151
|
-
|
152
|
-
# @!group Private Helpers
|
153
|
-
|
154
|
-
# @return [Array<Sandbox::FileAccessor>] The file accessors for all the
|
155
|
-
# specs platform combinations.
|
156
|
-
#
|
157
|
-
def file_accessors
|
158
|
-
@file_accessors ||= pod_targets.map(&:file_accessors).flatten.compact
|
159
|
-
end
|
160
|
-
|
161
|
-
# Adds file references to the list of the paths returned by the file
|
162
|
-
# accessor with the given key to the given group of the Pods project.
|
163
|
-
#
|
164
|
-
# @param [Symbol] file_accessor_key
|
165
|
-
# The method of the file accessor which would return the list of
|
166
|
-
# the paths.
|
167
|
-
#
|
168
|
-
# @param [Symbol] group_key
|
169
|
-
# The key of the group of the Pods project.
|
170
|
-
#
|
171
|
-
# @param [Bool] reflect_file_system_structure_for_development
|
172
|
-
# Whether organizing a local pod's files in subgroups inside
|
173
|
-
# the pod's group is allowed.
|
174
|
-
#
|
175
|
-
# @return [void]
|
176
|
-
#
|
177
|
-
def add_file_accessors_paths_to_pods_group(file_accessor_key, group_key = nil, reflect_file_system_structure_for_development = false)
|
178
|
-
file_accessors.each do |file_accessor|
|
179
|
-
pod_name = file_accessor.spec.name
|
180
|
-
local = sandbox.local?(pod_name)
|
181
|
-
paths = file_accessor.send(file_accessor_key)
|
182
|
-
paths = allowable_project_paths(paths)
|
183
|
-
paths.each do |path|
|
184
|
-
group = pods_project.group_for_spec(file_accessor.spec.name, group_key)
|
185
|
-
pods_project.add_file_reference(path, group, local && reflect_file_system_structure_for_development)
|
186
|
-
end
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
# Filters a list of paths down to those paths which can be added to
|
191
|
-
# the Xcode project. Some paths are intermediates and only their children
|
192
|
-
# should be added, while some paths are treated as bundles and their
|
193
|
-
# children should not be added directly.
|
194
|
-
#
|
195
|
-
# @param [Array<Pathname>] paths
|
196
|
-
# The paths to files or directories on disk.
|
197
|
-
#
|
198
|
-
# @return [Array<Pathname>] The paths which can be added to the Xcode project
|
199
|
-
#
|
200
|
-
def allowable_project_paths(paths)
|
201
|
-
lproj_paths = Set.new
|
202
|
-
lproj_paths_with_files = Set.new
|
203
|
-
allowable_paths = paths.select do |path|
|
204
|
-
path_str = path.to_s
|
205
|
-
|
206
|
-
# We add the directory for a Core Data model, but not the items in it.
|
207
|
-
next if path_str =~ /.*\.xcdatamodeld\/.+/i
|
208
|
-
|
209
|
-
# We add the directory for a Core Data migration mapping, but not the items in it.
|
210
|
-
next if path_str =~ /.*\.xcmappingmodel\/.+/i
|
211
|
-
|
212
|
-
# We add the directory for an asset catalog, but not the items in it.
|
213
|
-
next if path_str =~ /.*\.xcassets\/.+/i
|
214
|
-
|
215
|
-
if path_str =~ /\.lproj(\/|$)/i
|
216
|
-
# If the element is an .lproj directory then save it and potentially
|
217
|
-
# add it later if we don't find any contained items.
|
218
|
-
if path_str =~ /\.lproj$/i && path.directory?
|
219
|
-
lproj_paths << path
|
220
|
-
next
|
221
|
-
end
|
222
|
-
|
223
|
-
# Collect the paths for the .lproj directories that contain files.
|
224
|
-
lproj_path = /(^.*\.lproj)\/.*/i.match(path_str)[1]
|
225
|
-
lproj_paths_with_files << Pathname(lproj_path)
|
226
|
-
|
227
|
-
# Directories nested within an .lproj directory are added as file
|
228
|
-
# system references so their contained items are not added directly.
|
229
|
-
next if path.dirname.dirname == lproj_path
|
230
|
-
end
|
231
|
-
|
232
|
-
true
|
233
|
-
end
|
234
|
-
|
235
|
-
# Only add the path for the .lproj directories that do not have anything
|
236
|
-
# within them added as well. This generally happens if the glob within the
|
237
|
-
# resources directory was not a recursive glob.
|
238
|
-
allowable_paths + lproj_paths.subtract(lproj_paths_with_files).to_a
|
239
|
-
end
|
240
|
-
|
241
|
-
# Computes the destination sub-directory in the sandbox
|
242
|
-
#
|
243
|
-
# @param [Pathname] headers_sandbox
|
244
|
-
# The sandbox where the header links should be stored for this
|
245
|
-
# Pod.
|
246
|
-
#
|
247
|
-
# @param [Sandbox::FileAccessor] file_accessor
|
248
|
-
# The consumer file accessor for which the headers need to be
|
249
|
-
# linked.
|
250
|
-
#
|
251
|
-
# @param [Array<Pathname>] headers
|
252
|
-
# The absolute paths of the headers which need to be mapped.
|
253
|
-
#
|
254
|
-
# @return [Hash{Pathname => Array<Pathname>}] A hash containing the
|
255
|
-
# headers folders as the keys and the absolute paths of the
|
256
|
-
# header files as the values.
|
257
|
-
#
|
258
|
-
def header_mappings(headers_sandbox, file_accessor, headers)
|
259
|
-
consumer = file_accessor.spec_consumer
|
260
|
-
dir = headers_sandbox
|
261
|
-
dir += consumer.header_dir if consumer.header_dir
|
262
|
-
|
263
|
-
mappings = {}
|
264
|
-
headers.each do |header|
|
265
|
-
sub_dir = dir
|
266
|
-
if consumer.header_mappings_dir
|
267
|
-
header_mappings_dir = file_accessor.path_list.root + consumer.header_mappings_dir
|
268
|
-
relative_path = header.relative_path_from(header_mappings_dir)
|
269
|
-
sub_dir += relative_path.dirname
|
270
|
-
end
|
271
|
-
mappings[sub_dir] ||= []
|
272
|
-
mappings[sub_dir] << header
|
273
|
-
end
|
274
|
-
mappings
|
275
|
-
end
|
276
|
-
|
277
|
-
# Computes the destination sub-directory in the sandbox for headers
|
278
|
-
# from inside vendored frameworks.
|
279
|
-
#
|
280
|
-
# @param [Pathname] headers_sandbox
|
281
|
-
# The sandbox where the header links should be stored for this
|
282
|
-
# Pod.
|
283
|
-
#
|
284
|
-
# @param [Sandbox::FileAccessor] file_accessor
|
285
|
-
# The consumer file accessor for which the headers need to be
|
286
|
-
# linked.
|
287
|
-
#
|
288
|
-
def vendored_frameworks_header_mappings(headers_sandbox, file_accessor)
|
289
|
-
mappings = {}
|
290
|
-
file_accessor.vendored_frameworks.each do |framework|
|
291
|
-
headers_dir = Sandbox::FileAccessor.vendored_frameworks_headers_dir(framework)
|
292
|
-
headers = Sandbox::FileAccessor.vendored_frameworks_headers(framework)
|
293
|
-
framework_name = framework.basename(framework.extname)
|
294
|
-
dir = headers_sandbox + framework_name
|
295
|
-
headers.each do |header|
|
296
|
-
# the relative path of framework headers should be kept,
|
297
|
-
# not flattened like is done for most public headers.
|
298
|
-
relative_path = header.relative_path_from(headers_dir)
|
299
|
-
sub_dir = dir + relative_path.dirname
|
300
|
-
mappings[sub_dir] ||= []
|
301
|
-
mappings[sub_dir] << header
|
302
|
-
end
|
303
|
-
end
|
304
|
-
mappings
|
305
|
-
end
|
306
|
-
|
307
|
-
#-----------------------------------------------------------------------#
|
308
|
-
end
|
309
|
-
end
|
310
|
-
end
|
@@ -1,210 +0,0 @@
|
|
1
|
-
module Pod
|
2
|
-
class Installer
|
3
|
-
# Controller class responsible of creating and configuring the static
|
4
|
-
# library target in Pods project. It also creates the support file needed
|
5
|
-
# by the target.
|
6
|
-
#
|
7
|
-
class TargetInstaller
|
8
|
-
# @return [Sandbox] sandbox the sandbox where the support files should
|
9
|
-
# be generated.
|
10
|
-
#
|
11
|
-
attr_reader :sandbox
|
12
|
-
|
13
|
-
# @return [Target] The library whose target needs to be generated.
|
14
|
-
#
|
15
|
-
attr_reader :target
|
16
|
-
|
17
|
-
# @param [Project] project @see project
|
18
|
-
# @param [Target] target @see target
|
19
|
-
#
|
20
|
-
def initialize(sandbox, target)
|
21
|
-
@sandbox = sandbox
|
22
|
-
@target = target
|
23
|
-
end
|
24
|
-
|
25
|
-
private
|
26
|
-
|
27
|
-
#-----------------------------------------------------------------------#
|
28
|
-
|
29
|
-
# @!group Installation steps
|
30
|
-
|
31
|
-
# Adds the target for the library to the Pods project with the
|
32
|
-
# appropriate build configurations.
|
33
|
-
#
|
34
|
-
# @note The `PODS_HEADERS_SEARCH_PATHS` overrides the xcconfig.
|
35
|
-
#
|
36
|
-
# @return [void]
|
37
|
-
#
|
38
|
-
def add_target
|
39
|
-
product_type = target.product_type
|
40
|
-
name = target.label
|
41
|
-
platform = target.platform.name
|
42
|
-
language = target.uses_swift? ? :swift : :objc
|
43
|
-
@native_target = project.new_target(product_type, name, platform, deployment_target, nil, language)
|
44
|
-
|
45
|
-
product_name = target.product_name
|
46
|
-
product = @native_target.product_reference
|
47
|
-
product.name = product_name
|
48
|
-
|
49
|
-
target.user_build_configurations.each do |bc_name, type|
|
50
|
-
@native_target.add_build_configuration(bc_name, type)
|
51
|
-
end
|
52
|
-
|
53
|
-
@native_target.build_configurations.each do |configuration|
|
54
|
-
configuration.build_settings.merge!(custom_build_settings)
|
55
|
-
end
|
56
|
-
|
57
|
-
target.native_target = @native_target
|
58
|
-
end
|
59
|
-
|
60
|
-
# @return [String] The deployment target.
|
61
|
-
#
|
62
|
-
def deployment_target
|
63
|
-
target.platform.deployment_target.to_s
|
64
|
-
end
|
65
|
-
|
66
|
-
# Returns the customized build settings which are overridden in the build
|
67
|
-
# settings of the user target.
|
68
|
-
#
|
69
|
-
# @return [Hash{String => String}]
|
70
|
-
#
|
71
|
-
def custom_build_settings
|
72
|
-
settings = {}
|
73
|
-
|
74
|
-
unless target.archs.empty?
|
75
|
-
settings['ARCHS'] = target.archs
|
76
|
-
end
|
77
|
-
|
78
|
-
if target.requires_frameworks?
|
79
|
-
settings['PRODUCT_NAME'] = target.product_module_name
|
80
|
-
else
|
81
|
-
settings.merge!('OTHER_LDFLAGS' => '', 'OTHER_LIBTOOLFLAGS' => '')
|
82
|
-
end
|
83
|
-
|
84
|
-
settings
|
85
|
-
end
|
86
|
-
|
87
|
-
# Creates the directory where to store the support files of the target.
|
88
|
-
#
|
89
|
-
def create_support_files_dir
|
90
|
-
target.support_files_dir.mkdir
|
91
|
-
end
|
92
|
-
|
93
|
-
# Creates the Info.plist file which sets public framework attributes
|
94
|
-
#
|
95
|
-
# @return [void]
|
96
|
-
#
|
97
|
-
def create_info_plist_file
|
98
|
-
path = target.info_plist_path
|
99
|
-
UI.message "- Generating Info.plist file at #{UI.path(path)}" do
|
100
|
-
generator = Generator::InfoPlistFile.new(target)
|
101
|
-
generator.save_as(path)
|
102
|
-
add_file_to_support_group(path)
|
103
|
-
|
104
|
-
native_target.build_configurations.each do |c|
|
105
|
-
relative_path = path.relative_path_from(sandbox.root)
|
106
|
-
c.build_settings['INFOPLIST_FILE'] = relative_path.to_s
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
|
111
|
-
# Creates the module map file which ensures that the umbrella header is
|
112
|
-
# recognized with a customized path
|
113
|
-
#
|
114
|
-
# @yield_param [Generator::ModuleMap]
|
115
|
-
# yielded once to configure the private headers
|
116
|
-
#
|
117
|
-
# @return [void]
|
118
|
-
#
|
119
|
-
def create_module_map
|
120
|
-
path = target.module_map_path
|
121
|
-
UI.message "- Generating module map file at #{UI.path(path)}" do
|
122
|
-
generator = Generator::ModuleMap.new(target)
|
123
|
-
yield generator if block_given?
|
124
|
-
generator.save_as(path)
|
125
|
-
add_file_to_support_group(path)
|
126
|
-
|
127
|
-
native_target.build_configurations.each do |c|
|
128
|
-
relative_path = path.relative_path_from(sandbox.root)
|
129
|
-
c.build_settings['MODULEMAP_FILE'] = relative_path.to_s
|
130
|
-
end
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
# Generates a header which ensures that all header files are exported
|
135
|
-
# in the module map
|
136
|
-
#
|
137
|
-
# @yield_param [Generator::UmbrellaHeader]
|
138
|
-
# yielded once to configure the imports
|
139
|
-
#
|
140
|
-
def create_umbrella_header
|
141
|
-
path = target.umbrella_header_path
|
142
|
-
UI.message "- Generating umbrella header at #{UI.path(path)}" do
|
143
|
-
generator = Generator::UmbrellaHeader.new(target)
|
144
|
-
yield generator if block_given?
|
145
|
-
generator.save_as(path)
|
146
|
-
|
147
|
-
# Add the file to the support group and the native target,
|
148
|
-
# so it will been added to the header build phase
|
149
|
-
file_ref = add_file_to_support_group(path)
|
150
|
-
native_target.add_file_references([file_ref])
|
151
|
-
|
152
|
-
# Make the umbrella header public
|
153
|
-
build_file = native_target.headers_build_phase.build_file(file_ref)
|
154
|
-
build_file.settings ||= {}
|
155
|
-
build_file.settings['ATTRIBUTES'] = ['Public']
|
156
|
-
end
|
157
|
-
end
|
158
|
-
|
159
|
-
# Generates a dummy source file for each target so libraries that contain
|
160
|
-
# only categories build.
|
161
|
-
#
|
162
|
-
# @return [void]
|
163
|
-
#
|
164
|
-
def create_dummy_source
|
165
|
-
path = target.dummy_source_path
|
166
|
-
generator = Generator::DummySource.new(target.label)
|
167
|
-
generator.save_as(path)
|
168
|
-
file_reference = add_file_to_support_group(path)
|
169
|
-
native_target.source_build_phase.add_file_reference(file_reference)
|
170
|
-
end
|
171
|
-
|
172
|
-
# @return [PBXNativeTarget] the target generated by the installation
|
173
|
-
# process.
|
174
|
-
#
|
175
|
-
# @note Generated by the {#add_target} step.
|
176
|
-
#
|
177
|
-
attr_reader :native_target
|
178
|
-
|
179
|
-
private
|
180
|
-
|
181
|
-
#-----------------------------------------------------------------------#
|
182
|
-
|
183
|
-
# @!group Private helpers.
|
184
|
-
|
185
|
-
# @return [Project] the Pods project of the sandbox.
|
186
|
-
#
|
187
|
-
def project
|
188
|
-
sandbox.project
|
189
|
-
end
|
190
|
-
|
191
|
-
# @return [PBXGroup] the group where the file references to the support
|
192
|
-
# files should be stored.
|
193
|
-
#
|
194
|
-
attr_reader :support_files_group
|
195
|
-
|
196
|
-
# Adds a reference to the given file in the support group of this target.
|
197
|
-
#
|
198
|
-
# @param [Pathname] path
|
199
|
-
# The path of the file to which the reference should be added.
|
200
|
-
#
|
201
|
-
# @return [PBXFileReference] the file reference of the added file.
|
202
|
-
#
|
203
|
-
def add_file_to_support_group(path)
|
204
|
-
support_files_group.new_file(path)
|
205
|
-
end
|
206
|
-
|
207
|
-
#-----------------------------------------------------------------------#
|
208
|
-
end
|
209
|
-
end
|
210
|
-
end
|