diff --git a/.ruby-version b/.ruby-version new file mode 100644 index 0000000..e70b452 --- /dev/null +++ b/.ruby-version @@ -0,0 +1 @@ +2.6.0 diff --git a/lib/cocoapods/bazel/target.rb b/lib/cocoapods/bazel/target.rb index 11a075c..76af87d 100644 --- a/lib/cocoapods/bazel/target.rb +++ b/lib/cocoapods/bazel/target.rb @@ -278,17 +278,18 @@ def common_pod_target_infoplists(additional_plist: nil) def to_rule_kwargs kwargs = RuleArgs.new do |args| + private_header_files_array = file_accessors.map(&:spec_consumer).flat_map(&:private_header_files).flat_map { |g| expand_glob(g, expand_directories: false) } args .add(:name, label) .add(:module_name, product_module_name, defaults: [label]) .add(:module_map, !non_library_spec && file_accessors.map(&:module_map).find(&:itself)&.relative_path_from(@package_dir)&.to_s, defaults: [nil, false]). # public headers - add(:public_headers, glob(attr: :public_headers, sorted: false).yield_self { |f| case f when Array then f.reject { |path| path.include? '.framework/' } else f end }, defaults: [[]]) + add(:public_headers, glob(attr: :public_headers, sorted: false, excludes: private_header_files_array).yield_self { |f| case f when Array then f.reject { |path| path.include? '.framework/' } else f end }, defaults: [[]]) .add(:private_headers, glob(attr: :private_headers).yield_self { |f| case f when Array then f.reject { |path| path.include? '.framework/' } else f end }, defaults: [[]]) - .add(:pch, glob(attr: :prefix_header, return_files: true).first, defaults: [nil]) - .add(:data, glob(attr: :resources, exclude_directories: 0), defaults: [[]]) - .add(:resource_bundles, {}, defaults: [{}]) + .add(:pch, glob(attr: :prefix_header, return_files: true).first, defaults: [nil]). + # .add(:data, glob(attr: :resources, exclude_directories: 0), defaults: [[]]) + add(:resource_bundles, { product_module_name+"_bundle" => glob(attr: :resources, exclude_directories: 0)}, defaults: [{}]) .add(:swift_version, uses_swift? && pod_target.swift_version, defaults: [nil, false]) .add(:swift_objc_bridging_header, swift_objc_bridging_header, defaults: [nil]) @@ -345,7 +346,7 @@ def to_rule_kwargs patterns_by_exclude.concat(file_patterns.flat_map { |g| expand_glob(g, expand_directories: false) }) end end.tap do |bundles| - kwargs[:resource_bundles] = bundles.map do |bundle_name, patterns_by_excludes| + kwargs[:resource_bundles].merge!( bundles.map do |bundle_name, patterns_by_excludes| patterns_by_excludes.delete_if { |_, v| v.empty? } # resources implicitly have dirs expanded by CocoaPods resources = patterns_by_excludes.map do |excludes, globs| @@ -353,7 +354,7 @@ def to_rule_kwargs starlark { function_call(:glob, globs.uniq, exclude_directories: 0, **excludes) } end.reduce(&:+) [bundle_name, resources] - end.to_h + end.to_h) end # non-propagated stuff for a target that should build. diff --git a/lib/cocoapods/bazel/xcconfig_resolver.rb b/lib/cocoapods/bazel/xcconfig_resolver.rb index 1383ff6..205a665 100644 --- a/lib/cocoapods/bazel/xcconfig_resolver.rb +++ b/lib/cocoapods/bazel/xcconfig_resolver.rb @@ -8,7 +8,8 @@ module XCConfigResolver def resolved_build_setting_value(setting, settings:) return unless (value = settings[setting]) - sub_prefix = ->(s) { s.sub(%r{\A:/}, '') } + sub_prefix = ->(s) { s.to_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)