class StructCore::Processor::TargetMetadataComponent
Public Class Methods
new(structure, working_directory)
click to toggle source
Calls superclass method
StructCore::Processor::ProcessorComponent::new
# File lib/spec/processor/target_metadata.rb, line 10 def initialize(structure, working_directory) super(structure, working_directory) @type_component = TargetTypeComponent.new(@structure, @working_directory) @platform_component = TargetPlatformComponent.new(@structure, @working_directory) end
Public Instance Methods
process(target, dsl = nil)
click to toggle source
# File lib/spec/processor/target_metadata.rb, line 16 def process(target, dsl = nil) output = nil output = process_xc_target target if structure == :spec output = process_spec_target target, dsl if structure == :xcodeproj output end
process_spec_target(target, dsl)
click to toggle source
@param target [StructCore::Specfile::Target] @param dsl [Xcodeproj::Project]
# File lib/spec/processor/target_metadata.rb, line 42 def process_spec_target(target, dsl) product_type = @type_component.process(target) # Target native_target = dsl.new(Xcodeproj::Project::Object::PBXNativeTarget) dsl.targets << native_target native_target.name = target.name native_target.product_name = target.name native_target.product_type = product_type native_target.build_configuration_list = dsl.new(Xcodeproj::Project::Object::XCConfigurationList) native_target.build_configuration_list.default_configuration_is_visible = '0' native_target.build_configuration_list.default_configuration_name = 'Release' # Product prefix = '' prefix = 'lib' if product_type == :static_library extension = StructCore::XC_PRODUCT_UTI_EXTENSIONS[product_type] product = Xcodeproj::Project::Object::FileReferencesFactory.new_reference(dsl.products_group, "#{prefix}#{target.name}.#{extension}", :built_products) product.include_in_index = '0' product.set_explicit_file_type native_target.product_reference = product # Build phases native_target.build_phases << dsl.new(Xcodeproj::Project::Object::PBXSourcesBuildPhase) native_target.build_phases << dsl.new(Xcodeproj::Project::Object::PBXFrameworksBuildPhase) xc_platform_name = @platform_component.process(target) # Monkeypatch Xcodeproj's broken implementations of methods native_target.define_singleton_method(:platform_name) do xc_platform_name end native_target end
process_xc_target(target)
click to toggle source
@param target [Xcodeproj::Project::PBXNativeTarget]
# File lib/spec/processor/target_metadata.rb, line 25 def process_xc_target(target) StructCore::Specfile::Target.new( target.name, @type_component.process(target), [], [], [], [], [], [], [], [] ) end