Class: Phoenx::TestableTargetBuilder
Instance Attribute Summary
#framework_files, #project, #project_spec, #target_spec
Instance Method Summary
collapse
#add_build_phase_scripts, #add_config_files, #add_frameworks_and_libraries, #add_headers, #add_private_headers, #add_project_headers, #add_public_headers, #add_resources, #add_sources, #add_support_files, #add_system_dependencies, #configure_target, #initialize, #target
Instance Method Details
#add_schemes ⇒ Object
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
|
# File 'lib/phoenx/use_cases/generate_target.rb', line 222
def add_schemes
@target_spec.schemes.each do |s|
scheme = Xcodeproj::XCScheme.new
scheme.configure_with_targets(self.target, @test_target)
scheme.test_action.code_coverage_enabled = true
scheme.add_build_target(self.target, true)
scheme.add_test_target(@test_target)
archive_configuration = self.target.build_configuration_list[s.archive_configuration]
unless archive_configuration
abort "Invalid archive configuration assigned for scheme '#{s.name}' ".red + s.archive_configuration.bold
end
launch_configuration = self.target.build_configuration_list[s.launch_configuration]
unless launch_configuration
abort "Invalid launch configuration assigned for scheme '#{s.name}' ".red + s.launch_configuration.bold
end
scheme.archive_action.build_configuration = archive_configuration
scheme.launch_action.build_configuration = launch_configuration
scheme.save_as(@project_spec.project_file_name, s.name, false)
end
end
|
#add_sub_projects ⇒ Object
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
|
# File 'lib/phoenx/use_cases/generate_target.rb', line 202
def add_sub_projects
frameworks_group = @project.main_group.find_subpath(FRAMEWORKS_ROOT,false)
@target_spec.dependencies.each do |dp|
proj = nil
if dp.path == nil
proj = @project
else
abort "Missing dependency ".red + dp.path.bold unless File.exists?(dp.path)
file_ref = frameworks_group.find_file_by_path(dp.path)
unless file_ref != nil
frameworks_group.new_file(dp.path)
end
proj = Xcodeproj::Project::open(dp.path)
end
target = Phoenx.target_for_name(proj,dp.target_name)
abort "Missing target for dependency '#{dp.path}' ".red + dp.target_name.bold unless target
self.target.add_dependency(target)
end
end
|
#add_test_targets ⇒ Object
243
244
245
246
247
248
249
|
# File 'lib/phoenx/use_cases/generate_target.rb', line 243
def add_test_targets
@target_spec.test_targets.each do |test_target_spec|
builder = TestTargetBuilder.new(@target, @project, test_target_spec, @project_spec, @target_spec, self.framework_files)
builder.build
@test_target = builder.target
end
end
|
#build ⇒ Object
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
|
# File 'lib/phoenx/use_cases/generate_target.rb', line 251
def build
puts ">> Target ".green + @target_spec.name.bold unless @project_spec.targets.length == 1
self.add_sources
Phoenx::Target::HeaderBuilder.new(@project, @target, @target_spec).build
self.add_resources
self.add_config_files
self.add_sub_projects
self.add_system_dependencies
self.add_frameworks_and_libraries
self.add_build_phase_scripts
self.add_test_targets
self.generate_target_scheme
self.add_schemes
self.add_support_files
self.sort_build_phases
self.configure_target
end
|
#generate_target_scheme ⇒ Object
187
188
189
190
191
192
193
194
|
# File 'lib/phoenx/use_cases/generate_target.rb', line 187
def generate_target_scheme
scheme = Xcodeproj::XCScheme.new
scheme.configure_with_targets(self.target, @test_target)
scheme.test_action.code_coverage_enabled = true
scheme.add_build_target(self.target, true)
scheme.save_as(@project_spec.project_file_name, @target_spec.name, false)
end
|
#sort_build_phases ⇒ Object
196
197
198
199
200
|
# File 'lib/phoenx/use_cases/generate_target.rb', line 196
def sort_build_phases
self.target.build_phases.objects.each do |phase|
phase.sort
end
end
|