class XcodeArchiveCache::BuildSettings::Extractor
Constants
- CONFIGURATION_KEY
- CORRESPONDING_SIMULATOR_PLATFORM_NAME_KEY
- EFFECTIVE_PLATFORM_NAME_KEY
- PLATFORM_NAME_KEY
- TARGET_NAME_KEY
Attributes
filter[R]
@return [Filter]
parser[R]
@return [Parser]
Public Class Methods
new()
click to toggle source
# File lib/build_settings/extractor.rb, line 5 def initialize @parser = Parser.new @filter = Filter.new end
Public Instance Methods
extract_per_target(build_settings, fix_simulator)
click to toggle source
@param [String] build_settings
Raw `xcodebuild -alltargets -showBuildSettings` output
@return [Hash{String => Container}]
Target build settings keyed by target name
# File lib/build_settings/extractor.rb, line 16 def extract_per_target(build_settings, fix_simulator) per_target_settings = build_settings.split("Build settings for action") result = Hash.new per_target_settings.each do |target_settings| parsed_settings = parse(target_settings) target_name = get_target_name(parsed_settings) next unless target_name replace_platform_with_simulator(parsed_settings) if fix_simulator filtered_settings = filter.filter(parsed_settings) result[target_name] = Container.new(parsed_settings, filtered_settings) end result end
Private Instance Methods
get_target_name(parsed_settings)
click to toggle source
@param [Hash{String => String}] parsed_settings
@return [String]
Name of target that settings apply to
# File lib/build_settings/extractor.rb, line 97 def get_target_name(parsed_settings) parsed_settings[TARGET_NAME_KEY] end
parse(settings)
click to toggle source
@param [String] settings
@return [Hash{String => String}]
Setting values keyed by setting names
# File lib/build_settings/extractor.rb, line 48 def parse(settings) # remove leading spaces in each line, then split to lines lines = settings.strip.gsub(/\n\s{2,}/, "\n").split("\n") # drop "Build settings for action ..." lines.drop(1) result = Hash.new lines.each do |line| name = parser.parse_name(line) next unless name value = parser.parse_value(line) next unless value result[name] = value end result end
replace_platform_with_simulator(settings)
click to toggle source
@param [Hash{String => String}] settings
# File lib/build_settings/extractor.rb, line 72 def replace_platform_with_simulator(settings) original_platform = settings[EFFECTIVE_PLATFORM_NAME_KEY] simulator_platform = settings[CORRESPONDING_SIMULATOR_PLATFORM_NAME_KEY] settings[EFFECTIVE_PLATFORM_NAME_KEY] = "-#{simulator_platform}" settings[PLATFORM_NAME_KEY] = simulator_platform configuration = settings[CONFIGURATION_KEY] path_regexp = Regexp.new("#{configuration}#{original_platform}") simulator_path = "#{configuration}-#{simulator_platform}" settings.each do |key, value| settings[key] = value.gsub(path_regexp, simulator_path) end end