module Pod::Bazel::XCConfigResolver
Constants
- UNRESOLVED_SETTINGS
Public Instance Methods
resolve_string_with_build_settings(string, settings:)
click to toggle source
# File lib/cocoapods/bazel/xcconfig_resolver.rb, line 20 def resolve_string_with_build_settings(string, settings:) return string unless string =~ /\$(?:\{([_a-zA-Z0-0]+?)\}|\(([_a-zA-Z0-0]+?)\))/ match, key = Regexp.last_match.values_at(0, 1, 2).compact sub = settings.fetch(key, '') resolve_string_with_build_settings(string.gsub(match, sub), settings: settings) end
resolve_xcconfig(xcconfig, default_xcconfigs: [])
click to toggle source
# File lib/cocoapods/bazel/xcconfig_resolver.rb, line 42 def resolve_xcconfig(xcconfig, default_xcconfigs: []) matching_defaults = default_xcconfigs.select do |_, config| (config.keys - xcconfig.keys).empty? end xcconfig.each_key { |k| xcconfig[k] = resolved_build_setting_value(k, settings: xcconfig) } xcconfig.delete_if do |k, v| UNRESOLVED_SETTINGS.include?(k) || v.empty? end unless matching_defaults.empty? transformed = matching_defaults.map do |name, default_config| [name, xcconfig.reject do |k, v| v == default_config[k] end] end name, xcconfig = transformed.min_by { |(_, config)| config.size } end [name, xcconfig] end
resolved_build_setting_value(setting, settings:)
click to toggle source
# File lib/cocoapods/bazel/xcconfig_resolver.rb, line 8 def resolved_build_setting_value(setting, settings:) return unless (value = settings[setting]) sub_prefix = ->(s) { s.sub(%r{\A:/}, '') } resolved = resolve_string_with_build_settings(value, settings: settings) if Pod::Target::BuildSettings::PLURAL_SETTINGS.include?(setting) resolved.shellsplit.reject(&:empty?).map(&sub_prefix) else sub_prefix[resolved] end end