cocoapods-spm 0.1.5 → 0.1.6
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 +4 -4
- data/lib/cocoapods-spm/compatibility/all.rb +1 -0
- data/lib/cocoapods-spm/compatibility/rb26.rb +14 -0
- data/lib/cocoapods-spm/def/podfile.rb +4 -0
- data/lib/cocoapods-spm/def/spm_package.rb +4 -0
- data/lib/cocoapods-spm/hooks/post_integrate/1.add_spm_pkgs.rb +1 -1
- data/lib/cocoapods-spm/hooks/post_integrate/5.update_settings.rb +1 -1
- data/lib/cocoapods-spm/main.rb +1 -0
- data/lib/cocoapods-spm/resolver/recursive_target_resolver.rb +3 -1
- data/lib/cocoapods-spm/resolver/result.rb +20 -2
- data/lib/cocoapods-spm/resolver/target_dep_resolver.rb +1 -1
- data/lib/cocoapods-spm/resolver/umbrella_package.rb +1 -1
- data/lib/cocoapods-spm/swift/package/project_packages.rb +5 -4
- data/lib/cocoapods-spm/swift/package/target.rb +13 -1
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1e1e2bd492fb8080c1d1d0ab60b4abe580d3540559ba11085b0b2a93826de54
|
4
|
+
data.tar.gz: 1a30fc92b2e7cdc5082f6fea26635f55345a9ae08d835450e66041028b862036
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f7941760c3ec1e4be209ba35108e80db527218f6862f1fd4ffa87cbfde60688bd9e1aa735193f2018abd77593d0e8c47bfe652a60c577391a758cff7b47c8ccb
|
7
|
+
data.tar.gz: 21df8075d35796d309ed868cbfe7f07b53c57c325c3e3a298b7eabab3239d658805a54d291ed6f9fdf3bc06605210940f55f636c6e362e1932e828e72ad77985
|
@@ -0,0 +1 @@
|
|
1
|
+
require_relative "rb26"
|
@@ -55,6 +55,10 @@ module Pod
|
|
55
55
|
@linking_opts.fetch(:use_default_xcode_linking, false)
|
56
56
|
end
|
57
57
|
|
58
|
+
def should_exclude_from_target?(target_name)
|
59
|
+
@linking_opts.fetch(:exclude_from_targets, []).include?(target_name.delete_prefix('Pods-'))
|
60
|
+
end
|
61
|
+
|
58
62
|
def linker_flags
|
59
63
|
@linking_opts[:linker_flags] || []
|
60
64
|
end
|
@@ -33,7 +33,7 @@ module Pod
|
|
33
33
|
|
34
34
|
def add_spm_products_to_targets
|
35
35
|
pods_project.targets.each do |target|
|
36
|
-
@spm_resolver.result.
|
36
|
+
@spm_resolver.result.spm_dependencies_for(target).each do |dep|
|
37
37
|
pkg_ref = spm_pkg_refs[dep.pkg.name]
|
38
38
|
target_dep_ref = pkg_ref.create_target_dependency_ref(dep.product)
|
39
39
|
target.dependencies << target_dep_ref
|
@@ -47,7 +47,7 @@ module Pod
|
|
47
47
|
perform_settings_update(
|
48
48
|
update_targets: lambda do |target, _, _|
|
49
49
|
{
|
50
|
-
"SOURCE_PACKAGES_CHECKOUTS_DIR" => "${
|
50
|
+
"SOURCE_PACKAGES_CHECKOUTS_DIR" => "${BUILD_ROOT}/../../SourcePackages/checkouts",
|
51
51
|
"FRAMEWORK_SEARCH_PATHS" => "\"${PODS_CONFIGURATION_BUILD_DIR}/PackageFrameworks\"",
|
52
52
|
"LIBRARY_SEARCH_PATHS" => "\"${PODS_CONFIGURATION_BUILD_DIR}\"",
|
53
53
|
"SWIFT_INCLUDE_PATHS" => "$(PODS_CONFIGURATION_BUILD_DIR)",
|
data/lib/cocoapods-spm/main.rb
CHANGED
@@ -28,7 +28,9 @@ module Pod
|
|
28
28
|
@result.spm_dependencies_by_target.values.flatten.uniq(&:product).each do |dep|
|
29
29
|
next if dep.pkg.use_default_xcode_linking?
|
30
30
|
|
31
|
-
|
31
|
+
@podfile.platforms.each do |platform|
|
32
|
+
project_pkgs.resolve_recursive_targets_of(dep.pkg.name, dep.product, platform: platform)
|
33
|
+
end
|
32
34
|
end
|
33
35
|
end
|
34
36
|
end
|
@@ -31,12 +31,15 @@ module Pod
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def spm_dependencies_for(target)
|
34
|
-
@spm_dependencies_by_target[target
|
34
|
+
filtered_dependencies = @spm_dependencies_by_target[spec_name_of(target)]&.reject do |dep|
|
35
|
+
dep.pkg&.should_exclude_from_target?(target.name)
|
36
|
+
end
|
37
|
+
filtered_dependencies.to_a
|
35
38
|
end
|
36
39
|
|
37
40
|
def spm_targets_for(target, exclude_default_xcode_linking: true)
|
38
41
|
targets = spm_dependencies_for(target).flat_map do |d|
|
39
|
-
project_pkgs.resolve_recursive_targets_of(d.pkg.name, d.product)
|
42
|
+
project_pkgs.resolve_recursive_targets_of(d.pkg.name, d.product, platform: target.platform.name)
|
40
43
|
end.uniq(&:name)
|
41
44
|
return targets.reject(&:use_default_xcode_linking?) if exclude_default_xcode_linking
|
42
45
|
|
@@ -49,6 +52,21 @@ module Pod
|
|
49
52
|
spm_pkgs_for(target).flat_map(&:linker_flags)
|
50
53
|
).uniq
|
51
54
|
end
|
55
|
+
|
56
|
+
private
|
57
|
+
|
58
|
+
def spec_name_of(target)
|
59
|
+
# In case of multi-platforms, the target name might contains the platform (ex. Logger-iOS, Logger-macOS)
|
60
|
+
# We need to strip the platform suffix out
|
61
|
+
return target.name if @spm_dependencies_by_target.key?(target.name)
|
62
|
+
return target.root_spec.name if target.is_a?(Pod::PodTarget)
|
63
|
+
return target.name if target.is_a?(Pod::AggregateTarget)
|
64
|
+
|
65
|
+
cmps = target.name.split("-")
|
66
|
+
return cmps[...-1].join("-") if ["iOS", "macOS", "watchOS", "tvOS"].include?(cmps[-1])
|
67
|
+
|
68
|
+
target.name
|
69
|
+
end
|
52
70
|
end
|
53
71
|
end
|
54
72
|
end
|
@@ -16,7 +16,7 @@ module Pod
|
|
16
16
|
private
|
17
17
|
|
18
18
|
def resolve_spm_pkgs
|
19
|
-
@result.spm_pkgs = @podfile.target_definition_list.flat_map(&:spm_pkgs).uniq
|
19
|
+
@result.spm_pkgs = @podfile.target_definition_list.flat_map(&:spm_pkgs).uniq(&:name)
|
20
20
|
end
|
21
21
|
|
22
22
|
def resolve_spm_dependencies_by_target
|
@@ -12,9 +12,10 @@ module Pod
|
|
12
12
|
load
|
13
13
|
end
|
14
14
|
|
15
|
-
def resolve_recursive_targets_of(pkg_name, product_name)
|
15
|
+
def resolve_recursive_targets_of(pkg_name, product_name, platform: nil)
|
16
16
|
@recursive_targets_cache ||= {}
|
17
|
-
|
17
|
+
@recursive_targets_cache[platform] ||= {}
|
18
|
+
return @recursive_targets_cache[platform][product_name] if @recursive_targets_cache[platform].key(product_name)
|
18
19
|
|
19
20
|
res = []
|
20
21
|
to_visit = pkg_desc_of(pkg_name).targets_of_product(product_name)
|
@@ -23,9 +24,9 @@ module Pod
|
|
23
24
|
res << target
|
24
25
|
# Exclude macros as they wont be linked to the project's binary
|
25
26
|
# https://github.com/trinhngocthuyen/cocoapods-spm/issues/107
|
26
|
-
to_visit += target.resolve_dependencies(@pkg_desc_cache).reject(&:macro?)
|
27
|
+
to_visit += target.resolve_dependencies(@pkg_desc_cache, platform: platform).reject(&:macro?)
|
27
28
|
end
|
28
|
-
@recursive_targets_cache[product_name] = res.uniq(&:name)
|
29
|
+
@recursive_targets_cache[platform][product_name] = res.uniq(&:name)
|
29
30
|
end
|
30
31
|
|
31
32
|
def pkg_desc_of(name)
|
@@ -102,12 +102,13 @@ module Pod
|
|
102
102
|
end
|
103
103
|
end
|
104
104
|
|
105
|
-
def resolve_dependencies(pkg_desc_cache)
|
105
|
+
def resolve_dependencies(pkg_desc_cache, platform: nil)
|
106
106
|
raw.fetch("dependencies", []).flat_map do |hash|
|
107
107
|
type = ["byName", "target", "product"].find { |k| hash.key?(k) }
|
108
108
|
if type.nil?
|
109
109
|
raise Informative, "Unexpected dependency type. Must be either `byName`, `target`, or `product`."
|
110
110
|
end
|
111
|
+
next [] unless match_platform?(hash[type][-1], platform)
|
111
112
|
|
112
113
|
name = hash[type][0]
|
113
114
|
pkg_name = hash.key?("product") ? hash["product"][1] : self.pkg_name
|
@@ -148,6 +149,17 @@ module Pod
|
|
148
149
|
def use_default_xcode_linking?
|
149
150
|
root.use_default_xcode_linking?
|
150
151
|
end
|
152
|
+
|
153
|
+
private
|
154
|
+
|
155
|
+
def match_platform?(condition, platform)
|
156
|
+
# Consider matching if there's no condition
|
157
|
+
return true if condition.nil? || !condition.key?("platformNames")
|
158
|
+
|
159
|
+
# macos is called osx in Cocoapods.
|
160
|
+
platform_name = platform.to_s == 'osx' ? 'macos' : platform.to_s
|
161
|
+
condition["platformNames"].include?(platform_name)
|
162
|
+
end
|
151
163
|
end
|
152
164
|
end
|
153
165
|
end
|
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.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Thuyen Trinh
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: xcodeproj
|
@@ -38,6 +38,8 @@ files:
|
|
38
38
|
- lib/cocoapods-spm/command/macro/fetch.rb
|
39
39
|
- lib/cocoapods-spm/command/macro/prebuild.rb
|
40
40
|
- lib/cocoapods-spm/command/spm.rb
|
41
|
+
- lib/cocoapods-spm/compatibility/all.rb
|
42
|
+
- lib/cocoapods-spm/compatibility/rb26.rb
|
41
43
|
- lib/cocoapods-spm/config.rb
|
42
44
|
- lib/cocoapods-spm/config/pod.rb
|
43
45
|
- lib/cocoapods-spm/config/project.rb
|