class StructCore::Processor::TargetConfigurationComponent
Public Instance Methods
extract_target_config_overrides(profiles, build_settings)
click to toggle source
# File lib/spec/processor/target_configuration.rb, line 94 def extract_target_config_overrides(profiles, build_settings) default_settings = profiles.map { |profile_name| [profile_name, File.join(XC_TARGET_CONFIG_PROFILE_PATH, "#{profile_name.sub(':', '_')}.yml")] }.map { |data| profile_name, profile_file_name = data unless File.exist? profile_file_name puts Paint["Warning: unrecognised project configuration profile '#{profile_name}'. Ignoring...", :yellow] next nil end next YAML.load_file(profile_file_name) }.inject({}) { |settings, next_settings| settings.merge next_settings || {} } build_settings.reject { |k, _| default_settings.include? k } end
extract_target_xcconfig_overrides(xcconfig_file_ref, project_dir)
click to toggle source
# File lib/spec/processor/target_configuration.rb, line 112 def extract_target_xcconfig_overrides(xcconfig_file_ref, project_dir) return {} if xcconfig_file_ref.nil? xcconfig_file = xcconfig_file_ref.hierarchy_path || '' StructCore::XcconfigParser.parse xcconfig_file, project_dir end
extract_xcconfig_path(base_configuration_reference, project_dir)
click to toggle source
# File lib/spec/processor/target_configuration.rb, line 80 def extract_xcconfig_path(base_configuration_reference, project_dir) path = base_configuration_reference.hierarchy_path path = path.slice(1, path.length) if path.start_with? '/' source_path = File.join(project_dir, path) unless File.exist? source_path puts Paint["Warning: Unable to locate xcconfig file: #{source_path}. Xcconfig reference will be ignored."] return nil end path end
process(config, target_dsl = nil, dsl = nil)
click to toggle source
# File lib/spec/processor/target_configuration.rb, line 8 def process(config, target_dsl = nil, dsl = nil) output = nil output = process_xc_config config, dsl if structure == :spec && !dsl.nil? output = process_spec_config config, target_dsl, dsl if structure == :xcodeproj && !dsl.nil? && !target_dsl.nil? output end
process_spec_config(config, target_dsl, dsl)
click to toggle source
@param config [StructCore::Specfile::Target::Configuration] @param target_dsl [Xcodeproj::Project::PBXNativeTarget] @param dsl [Xcodeproj::Project]
# File lib/spec/processor/target_configuration.rb, line 48 def process_spec_config(config, target_dsl, dsl) build_settings = {} config.profiles.map { |profile_name| [profile_name, File.join(XC_TARGET_CONFIG_PROFILE_PATH, "#{profile_name.sub(':', '_')}.yml")] }.map { |data| profile_name, profile_file_name = data unless File.exist? profile_file_name puts Paint["Warning: unrecognised project configuration profile '#{profile_name}'. Ignoring...", :yellow] next nil end next YAML.load_file(profile_file_name) }.compact.each { |profile_data| build_settings = build_settings.merge profile_data } build_settings = build_settings.merge config.settings xc_config = target_dsl.add_build_configuration(config.name, XC_CONFIGURATION_TYPE_MAP[config.name]) xc_config.build_settings = build_settings return if config.source.nil? unless File.exist?(File.join(@working_directory, config.source)) puts Paint["Warning: Configuration #{config.name} source file #{config.source} was not found. The specified xcconfig file will be ignored for this configuration", :yellow] return end config_group = dsl.groups.find { |g| g.display_name == '$config' } config_group = dsl.new_group '$config', nil, '<group>' if config_group.nil? xc_config.base_configuration_reference = config_group.new_file config.source end
process_xc_config(config, dsl)
click to toggle source
@param config [Xcodeproj::Project::Object::XCBuildConfiguration] @param dsl [Xcodeproj::Project::PBXNativeTarget]
# File lib/spec/processor/target_configuration.rb, line 19 def process_xc_config(config, dsl) type = dsl.product_type.sub 'com.apple.product-type.', ':' config_xcconfig_overrides = extract_target_xcconfig_overrides config.base_configuration_reference, @working_directory target_sdk = dsl.sdk target_sdk = config_xcconfig_overrides['SDKROOT'] unless config_xcconfig_overrides['SDKROOT'].nil? profiles = [] profiles = ['platform:ios', type.sub(':', '')] if target_sdk.include? 'iphoneos' profiles = ['platform:mac', type.sub(':', '')] if target_sdk.include? 'macosx' profiles = ['platform:tv', type.sub(':', '')] if target_sdk.include? 'appletvos' profiles = ['platform:watch', type.sub(':', '')] if target_sdk.include? 'watchos' merged_config_settings = extract_target_config_overrides(profiles, config.build_settings) path = nil path = extract_xcconfig_path config.base_configuration_reference, @working_directory unless config.base_configuration_reference.nil? StructCore::Specfile::Target::Configuration.new( config.name, merged_config_settings, profiles, path ) end