cocoapods-spm 0.1.15 → 0.1.17

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b4c8cfc44221acd450d4ab322792cc89a99fc46fcaeeaa750ed98ec23945ab4e
4
- data.tar.gz: 9006ca077f16980c9c738b8dfa40ba1624b1ca387e7049fb9fa3b0db8aa99f13
3
+ metadata.gz: 5e5a6cf17e12dd330650a3b88c3f6dd22c3ee90abbcd60dc5fe07f7b1b1af6d6
4
+ data.tar.gz: c25bea8626a41f11b1e4761241a9499d232b4b775d30c34bc67e994785f4cd3d
5
5
  SHA512:
6
- metadata.gz: 0e0a9bb08bb34ad8367597401aad718243fdac370601850fde8e3bb46ad5ca502a42bfb56558c6623c0b189c008bd1641462d84a9ef82b78b60044c47e736dab
7
- data.tar.gz: ba9bb4b5e0a8a90f903924ec938fa69b96feca40b59c3658563290061dbe8ecd7b738559b48396e56174ce2bca69261be78eb568cc36de21625146b9d2af9954
6
+ metadata.gz: cafde5a272c7bbd41bd3c408ac7cd702fdf6fbbd176ac824ed43de26207e0c0c6ea176fd210b88d6eb1f7d6fc6f8e26b12b75a148ae1a0e40066d0153e311d09
7
+ data.tar.gz: 3d92b37b08762a510e1b115db7e309a070258dfaa3b83eb3743f7653bcc88ad66a0d86010eed4f320490dcdceff0bf5942744db0f6ac1b1f09ea0e2500148bd3
@@ -0,0 +1,32 @@
1
+ module Pod
2
+ class Target
3
+ class NonLibrary
4
+ attr_reader :underlying, :spec
5
+
6
+ def initialize(underlying: nil, spec: nil)
7
+ @underlying = underlying
8
+ @spec = spec
9
+ end
10
+
11
+ def name
12
+ if underlying.is_a?(Xcodeproj::Project::Object::PBXNativeTarget) && underlying.test_target_type?
13
+ return underlying.name.sub(/-(Unit|UI)-/, "/")
14
+ end
15
+
16
+ spec.name
17
+ end
18
+
19
+ def platform
20
+ underlying.platform
21
+ end
22
+
23
+ def xcconfig_path(variant)
24
+ # For test spec, return the path as <TargetName>.unit-test.<Config>.xcconfig
25
+ # Here, we're trying to get `unit-tests` out of the spec, then calling
26
+ # `underlying.xcconfig_path("unit-tests.debug")` to get the result
27
+ variant_prefix = underlying.spec_label(spec).sub("#{underlying.name}-", "")
28
+ underlying.xcconfig_path("#{variant_prefix}.#{variant}")
29
+ end
30
+ end
31
+ end
32
+ end
@@ -82,6 +82,15 @@ module Pod
82
82
  proc.call(update_targets, target, setting, config)
83
83
  proc.call(update_pod_targets, target, setting, config)
84
84
  end
85
+ next unless target.is_a?(PodTarget)
86
+
87
+ (target.test_specs + target.app_specs).each do |spec|
88
+ target_wrapper = Target::NonLibrary.new(underlying: target, spec: spec)
89
+ target.build_settings.each_key do |config|
90
+ setting = target.build_settings_for_spec(spec, :configuration => config)
91
+ proc.call(update_targets, target_wrapper, setting, config)
92
+ end
93
+ end
85
94
  end
86
95
 
87
96
  aggregate_targets.each do |target|
@@ -71,7 +71,7 @@ module Pod
71
71
  end
72
72
 
73
73
  def linker_flags_for(target)
74
- return [] if !target.is_a?(Pod::AggregateTarget) && target.build_as_static?
74
+ return [] if target.is_a?(Pod::PodTarget) && target.build_as_static?
75
75
 
76
76
  @spm_resolver.result.linker_flags_for(target)
77
77
  end
@@ -8,6 +8,7 @@ require "cocoapods-spm/def/installer"
8
8
  require "cocoapods-spm/def/target_definition"
9
9
  require "cocoapods-spm/def/podfile"
10
10
  require "cocoapods-spm/def/spec"
11
+ require "cocoapods-spm/def/target"
11
12
  require "cocoapods-spm/patch/aggregate_target"
12
13
  require "cocoapods-spm/patch/installer"
13
14
  require "cocoapods-spm/command/spm"
@@ -31,6 +31,9 @@ module Pod
31
31
  end
32
32
 
33
33
  def spm_dependencies_for(target)
34
+ if target.is_a?(Xcodeproj::Project::Object::PBXNativeTarget) && target.test_target_type?
35
+ target = Target::NonLibrary.new(underlying: target)
36
+ end
34
37
  filtered_dependencies = @spm_dependencies_by_target[spec_name_of(target)]&.reject do |dep|
35
38
  dep.pkg&.should_exclude_from_target?(target.name)
36
39
  end
@@ -28,7 +28,9 @@ module Pod
28
28
  def resolve_dependencies_for_targets
29
29
  specs = @aggregate_targets.flat_map(&:specs).uniq
30
30
  specs.each do |spec|
31
- @result.spm_dependencies_by_target[spec.name] = spec.spm_dependencies
31
+ deps = spec.spm_dependencies
32
+ deps += spec.root.spm_dependencies if spec.subspec?
33
+ @result.spm_dependencies_by_target[spec.name] = deps.uniq
32
34
  end
33
35
  end
34
36
 
@@ -4,15 +4,30 @@ module Pod
4
4
  def initialize(aggregate_targets, result)
5
5
  @aggregate_targets = aggregate_targets
6
6
  @spm_pkgs = result.spm_pkgs
7
+ @project_pkgs = result.project_pkgs
7
8
  @spm_dependencies_by_target = result.spm_dependencies_by_target
8
9
  end
9
10
 
10
11
  def validate!
11
12
  verify_no_missing_pkgs
13
+ verify_products_exist
12
14
  end
13
15
 
14
16
  private
15
17
 
18
+ def verify_products_exist
19
+ @spm_dependencies_by_target.values.flatten.uniq.each do |d|
20
+ products = @project_pkgs.pkg_desc_of(d.pkg.name).products.map(&:name)
21
+ next if products.include?(d.product)
22
+
23
+ raise Informative, <<~DESC
24
+ There was an invalid dependency in Podfile or podspecs.
25
+ Package `#{d.pkg.name}` does not contain product `#{d.product}`.
26
+ Available products: #{products}
27
+ DESC
28
+ end
29
+ end
30
+
16
31
  def dependents_of_pkg(name)
17
32
  @specs ||= @aggregate_targets.flat_map(&:specs).uniq
18
33
  @specs.select { |s| s.spm_dependencies.any? { |d| d.name == name } }.map(&:name)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-spm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.17
5
5
  platform: ruby
6
6
  authors:
7
7
  - Thuyen Trinh
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-03-16 00:00:00.000000000 Z
11
+ date: 2025-06-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: xcodeproj
@@ -49,6 +49,7 @@ files:
49
49
  - lib/cocoapods-spm/def/spec.rb
50
50
  - lib/cocoapods-spm/def/spm_dependency.rb
51
51
  - lib/cocoapods-spm/def/spm_package.rb
52
+ - lib/cocoapods-spm/def/target.rb
52
53
  - lib/cocoapods-spm/def/target_definition.rb
53
54
  - lib/cocoapods-spm/def/xcodeproj.rb
54
55
  - lib/cocoapods-spm/executables.rb