cocoapods-binary-matchup 0.0.7 → 0.0.14

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: e7e74656ba959137bc467283d6f0187e12fdd347d4e32a8febe29378e30edd1f
4
- data.tar.gz: 2f7a94d654c0bfac6d802ae6146f546883b2c21beb2c39ff25a8fdc079d5bb79
3
+ metadata.gz: a162e62ce7fd4234c7adab5f5988acf66b19ca01309faf016c7c881cdc8f7067
4
+ data.tar.gz: 5c6307fd33caf5ca3c311ec89dbef92ee3cca9d3f39a7fa8d746fcae97a7debd
5
5
  SHA512:
6
- metadata.gz: 119f67d579be29c580760217af5bd18fe59a020b50b513acc9151e9ba7b83878db2eefb0e1636709ecf58abc2149e959065c05400fa97e5555a2d51448d8c086
7
- data.tar.gz: c79dc28fee921124ab5100c8c8e9764191ddfa2af941f7a05500f4e34f5ec1dd10403478ed6500b0fcccde5119acf2588fc02ca40b4b049a96cbe139c6805def
6
+ metadata.gz: 47159e0b7bfa77f8423521d56a4b1a9de6daea071bcc2abf2ab4ef55abea7eaae2de09613c3a32a8e6e16e04f0768df9542568351804973729ddcca5a1413c1a
7
+ data.tar.gz: 011d0445b238af7b6acc5d1af9bad5a67fe6003b434e26767fbc2fd52f85193dd704faec44f5b47d3856ed8a41d3ad1e60e1124a09da0c0030043a6c6192ed96
data/Gemfile.lock ADDED
@@ -0,0 +1,161 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ cocoapods-binary-matchup (0.0.8)
5
+ cocoapods (>= 1.5.0, < 2.0)
6
+ fourflusher (~> 2.0)
7
+ xcpretty (~> 0.3.0)
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ CFPropertyList (3.0.7)
13
+ base64
14
+ nkf
15
+ rexml
16
+ activesupport (7.2.2.1)
17
+ base64
18
+ benchmark (>= 0.3)
19
+ bigdecimal
20
+ concurrent-ruby (~> 1.0, >= 1.3.1)
21
+ connection_pool (>= 2.2.5)
22
+ drb
23
+ i18n (>= 1.6, < 2)
24
+ logger (>= 1.4.2)
25
+ minitest (>= 5.1)
26
+ securerandom (>= 0.3)
27
+ tzinfo (~> 2.0, >= 2.0.5)
28
+ addressable (2.8.7)
29
+ public_suffix (>= 2.0.2, < 7.0)
30
+ algoliasearch (1.27.5)
31
+ httpclient (~> 2.8, >= 2.8.3)
32
+ json (>= 1.5.1)
33
+ atomos (0.1.3)
34
+ bacon (1.2.0)
35
+ base64 (0.3.0)
36
+ benchmark (0.4.1)
37
+ bigdecimal (3.2.2)
38
+ claide (1.1.0)
39
+ cocoapods (1.16.2)
40
+ addressable (~> 2.8)
41
+ claide (>= 1.0.2, < 2.0)
42
+ cocoapods-core (= 1.16.2)
43
+ cocoapods-deintegrate (>= 1.0.3, < 2.0)
44
+ cocoapods-downloader (>= 2.1, < 3.0)
45
+ cocoapods-plugins (>= 1.0.0, < 2.0)
46
+ cocoapods-search (>= 1.0.0, < 2.0)
47
+ cocoapods-trunk (>= 1.6.0, < 2.0)
48
+ cocoapods-try (>= 1.1.0, < 2.0)
49
+ colored2 (~> 3.1)
50
+ escape (~> 0.0.4)
51
+ fourflusher (>= 2.3.0, < 3.0)
52
+ gh_inspector (~> 1.0)
53
+ molinillo (~> 0.8.0)
54
+ nap (~> 1.0)
55
+ ruby-macho (>= 2.3.0, < 3.0)
56
+ xcodeproj (>= 1.27.0, < 2.0)
57
+ cocoapods-core (1.16.2)
58
+ activesupport (>= 5.0, < 8)
59
+ addressable (~> 2.8)
60
+ algoliasearch (~> 1.0)
61
+ concurrent-ruby (~> 1.1)
62
+ fuzzy_match (~> 2.0.4)
63
+ nap (~> 1.0)
64
+ netrc (~> 0.11)
65
+ public_suffix (~> 4.0)
66
+ typhoeus (~> 1.0)
67
+ cocoapods-deintegrate (1.0.5)
68
+ cocoapods-downloader (2.1)
69
+ cocoapods-plugins (1.0.0)
70
+ nap
71
+ cocoapods-search (1.0.1)
72
+ cocoapods-trunk (1.6.0)
73
+ nap (>= 0.8, < 2.0)
74
+ netrc (~> 0.11)
75
+ cocoapods-try (1.2.0)
76
+ colored2 (3.1.2)
77
+ concurrent-ruby (1.3.5)
78
+ connection_pool (2.5.3)
79
+ drb (2.2.3)
80
+ escape (0.0.4)
81
+ ethon (0.16.0)
82
+ ffi (>= 1.15.0)
83
+ ffi (1.17.2)
84
+ ffi (1.17.2-aarch64-linux-gnu)
85
+ ffi (1.17.2-aarch64-linux-musl)
86
+ ffi (1.17.2-arm-linux-gnu)
87
+ ffi (1.17.2-arm-linux-musl)
88
+ ffi (1.17.2-arm64-darwin)
89
+ ffi (1.17.2-x86-linux-gnu)
90
+ ffi (1.17.2-x86-linux-musl)
91
+ ffi (1.17.2-x86_64-darwin)
92
+ ffi (1.17.2-x86_64-linux-gnu)
93
+ ffi (1.17.2-x86_64-linux-musl)
94
+ fourflusher (2.3.1)
95
+ fuzzy_match (2.0.4)
96
+ gh_inspector (1.1.3)
97
+ httpclient (2.9.0)
98
+ mutex_m
99
+ i18n (1.14.7)
100
+ concurrent-ruby (~> 1.0)
101
+ json (2.12.2)
102
+ logger (1.7.0)
103
+ minitest (5.25.5)
104
+ mocha (2.7.1)
105
+ ruby2_keywords (>= 0.0.5)
106
+ mocha-on-bacon (0.2.3)
107
+ mocha (>= 0.13.0)
108
+ molinillo (0.8.0)
109
+ mutex_m (0.3.0)
110
+ nanaimo (0.4.0)
111
+ nap (1.1.0)
112
+ netrc (0.11.0)
113
+ nkf (0.2.0)
114
+ prettybacon (0.0.2)
115
+ bacon (~> 1.2)
116
+ public_suffix (4.0.7)
117
+ rake (13.3.0)
118
+ rexml (3.4.1)
119
+ rouge (2.0.7)
120
+ ruby-macho (2.5.1)
121
+ ruby2_keywords (0.0.5)
122
+ securerandom (0.4.1)
123
+ typhoeus (1.4.1)
124
+ ethon (>= 0.9.0)
125
+ tzinfo (2.0.6)
126
+ concurrent-ruby (~> 1.0)
127
+ xcodeproj (1.27.0)
128
+ CFPropertyList (>= 2.3.3, < 4.0)
129
+ atomos (~> 0.1.3)
130
+ claide (>= 1.0.2, < 2.0)
131
+ colored2 (~> 3.1)
132
+ nanaimo (~> 0.4.0)
133
+ rexml (>= 3.3.6, < 4.0)
134
+ xcpretty (0.3.0)
135
+ rouge (~> 2.0.7)
136
+
137
+ PLATFORMS
138
+ aarch64-linux-gnu
139
+ aarch64-linux-musl
140
+ arm-linux-gnu
141
+ arm-linux-musl
142
+ arm64-darwin
143
+ ruby
144
+ x86-linux-gnu
145
+ x86-linux-musl
146
+ x86_64-darwin
147
+ x86_64-linux-gnu
148
+ x86_64-linux-musl
149
+
150
+ DEPENDENCIES
151
+ bacon
152
+ bundler (~> 2.6.9)
153
+ cocoapods
154
+ cocoapods-binary-matchup!
155
+ mocha
156
+ mocha-on-bacon
157
+ prettybacon
158
+ rake
159
+
160
+ BUNDLED WITH
161
+ 2.6.9
@@ -22,6 +22,6 @@ Gem::Specification.new do |spec|
22
22
  spec.add_dependency "fourflusher", "~> 2.0"
23
23
  spec.add_dependency "xcpretty", "~> 0.3.0"
24
24
 
25
- spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'bundler', '~> 2.6.9'
26
26
  spec.add_development_dependency 'rake'
27
27
  end
@@ -27,18 +27,12 @@ module Pod
27
27
  UI.puts "install_for_prebuild! start: #{self.name}"
28
28
 
29
29
  # 获取pod版本信息
30
- pod_version = Pod::PrebuildCache::Cache.get_pod_version(standard_sanbox, self.name)
30
+ prebuild_sandbox = Pod::PrebuildSandbox.from_standard_sandbox(standard_sanbox)
31
+
32
+ pod_version = Pod::PrebuildCache::Cache.get_pod_version(prebuild_sandbox, self.name)
31
33
  target_folder = standard_sanbox.pod_dir(self.name)
32
34
  target_folder.rmtree if target_folder.exist?
33
35
 
34
- # 1. 首先尝试从缓存恢复
35
- if Pod::PrebuildCache::Cache.copy_from_cache_if_exists(self.name, pod_version, target_folder.to_s)
36
- UI.puts "📦 Successfully restored #{self.name} (#{pod_version}) from cache"
37
- return
38
- end
39
-
40
- # 2. 如果缓存不存在,从预构建目录拷贝
41
- prebuild_sandbox = Pod::PrebuildSandbox.from_standard_sandbox(standard_sanbox)
42
36
  real_file_folder = prebuild_sandbox.framework_folder_path_for_pod_name(self.name)
43
37
 
44
38
  if real_file_folder.exist?
@@ -88,7 +82,7 @@ module Pod
88
82
  # 只有当不是预构建的pod时才删除,避免删除刚拷贝的预构建文件
89
83
  next if self.prebuild_pod_names.include?(root_name)
90
84
 
91
- # delete the cached files
85
+ # delete the cached files,include all cached files in the target
92
86
  target_path = self.sandbox.pod_dir(root_name)
93
87
  target_path.rmtree if target_path.exist?
94
88
 
@@ -122,6 +116,7 @@ module Pod
122
116
 
123
117
  #
124
118
  specs = self.analysis_result.specifications
119
+ # 只保留podspec中prebuild的pod,这里本质过滤了所有非prebuild的pod
125
120
  prebuilt_specs = (specs.select do |spec|
126
121
  self.prebuild_pod_names.include? spec.root.name
127
122
  end)
@@ -227,7 +222,7 @@ module Pod
227
222
  old_method = instance_method(:install_source_of_pod)
228
223
  define_method(:install_source_of_pod) do |pod_name|
229
224
 
230
- # copy from original
225
+ # copy from original,创建一个单pod的安装器
231
226
  pod_installer = create_pod_installer(pod_name)
232
227
  # \copy from original
233
228
 
@@ -19,160 +19,54 @@ module Pod
19
19
 
20
20
  # 获取pod的版本信息,优先使用commit hash
21
21
  def self.get_pod_version(sandbox, pod_name)
22
- begin
23
- Pod::UI.puts "🔍 Looking for version of: #{pod_name}"
24
- # 优先级:commit > tag > version > timestamp
25
-
26
- # 1. 首先尝试从Manifest.lock获取commit信息
27
- manifest_lock = sandbox.root + 'Manifest.lock'
28
- if manifest_lock.exist?
29
- manifest_content = YAML.load_file(manifest_lock)
30
-
31
- # 优先检查 CHECKOUT OPTIONS 中的commit信息
32
- checkout_options = manifest_content['CHECKOUT OPTIONS'] || {}
33
- if checkout_options[pod_name].is_a?(Hash)
34
- checkout_info = checkout_options[pod_name]
35
- # 优先使用commit,然后是tag
36
- if checkout_info[:commit] || checkout_info['commit']
37
- commit = checkout_info[:commit] || checkout_info['commit']
38
- Pod::UI.puts "📋 Using commit for #{pod_name}: #{commit[0..7]}..."
39
- return commit
40
- elsif checkout_info[:tag] || checkout_info['tag']
41
- tag = checkout_info[:tag] || checkout_info['tag']
42
- Pod::UI.puts "📋 Using tag for #{pod_name}: #{tag}"
43
- return tag
44
- end
45
- end
46
-
47
- # 如果没有commit信息,查找版本信息
48
- pods = manifest_content['PODS'] || []
49
- Pod::UI.puts "🔍 Searching in #{pods.length} pod entries from Manifest.lock"
50
-
51
- pods.each do |pod_entry|
52
- if pod_entry.is_a?(Hash)
53
- # Hash 格式:{"PodName (1.0.0)" => [...]}
54
- pod_entry.each do |key, _|
55
- key_str = key.to_s
56
-
57
- # 使用更灵活的匹配逻辑,支持subspec
58
- match = key_str.match(/^#{Regexp.escape(pod_name)}\s*\(([^)]+)\)/)
59
- if match
60
- Pod::UI.puts "📋 Found exact match! Using version for #{pod_name}: #{match[1]}"
61
- return match[1]
62
- end
63
-
64
- # 如果精确匹配失败,尝试检查是否是subspec的情况
65
- # 例如:pod_name是"GoogleUtilities/AppDelegateSwizzler",但key是"GoogleUtilities/AppDelegateSwizzler (8.1.0)"
66
- if key_str.include?(pod_name) && key_str.include?('(')
67
- version_match = key_str.match(/\(([^)]+)\)/)
68
- if version_match
69
- Pod::UI.puts "📋 Found partial match! Using version for #{pod_name}: #{version_match[1]}"
70
- return version_match[1]
71
- end
72
- end
73
- end
74
- elsif pod_entry.is_a?(String)
75
- # String 格式:"PodName (1.0.0)"
76
-
77
- match = pod_entry.match(/^#{Regexp.escape(pod_name)}\s*\(([^)]+)\)/)
78
- if match
79
- Pod::UI.puts "📋 Found exact match! Using version for #{pod_name}: #{match[1]}"
80
- return match[1]
81
- end
82
-
83
- # 如果精确匹配失败,尝试部分匹配
84
- if pod_entry.include?(pod_name) && pod_entry.include?('(')
85
- version_match = pod_entry.match(/\(([^)]+)\)/)
86
- if version_match
87
- Pod::UI.puts "📋 Found partial match! Using version for #{pod_name}: #{version_match[1]}"
88
- return version_match[1]
89
- end
90
- end
91
- end
92
- end
93
-
94
- Pod::UI.puts "⚠️ No version found for #{pod_name} in Manifest.lock"
22
+ UI.puts "🔍 starting get pod version: #{pod_name}"
23
+ checkout_options = sandbox.manifest.checkout_options_for_pod_named(pod_name)
24
+ # 优先使用checkout_options中的检出来源
25
+ if checkout_options
26
+ UI.puts "🔍 get pod checkout version: #{pod_name}"
27
+ if checkout_options[:tag]
28
+ UI.puts "🔍 get pod checkout version tag: #{pod_name}# - #{checkout_options[:tag]}"
29
+ return checkout_options[:tag]
30
+ end
31
+ if checkout_options[:branch]
32
+ UI.puts "🔍 get pod checkout version branch: #{pod_name}# - #{checkout_options[:branch]}"
33
+ return checkout_options[:branch]
95
34
  end
35
+ if checkout_options[:commit]
36
+ UI.puts "🔍 get pod checkout version commit: #{pod_name}# - #{checkout_options[:commit]}"
37
+ return checkout_options[:commit]
38
+ end
39
+ end
96
40
 
97
-
98
-
99
- # 2. 如果Manifest.lock不存在或没找到,尝试从Podfile.lock获取
100
- podfile_lock = sandbox.root.parent + 'Podfile.lock'
101
- if podfile_lock.exist?
102
- podfile_content = YAML.load_file(podfile_lock)
103
-
104
- # 同样优先检查checkout信息
105
- checkout_options = podfile_content['CHECKOUT OPTIONS'] || {}
106
- if checkout_options[pod_name].is_a?(Hash)
107
- checkout_info = checkout_options[pod_name]
108
- if checkout_info[:commit] || checkout_info['commit']
109
- commit = checkout_info[:commit] || checkout_info['commit']
110
- Pod::UI.puts "📋 Using commit for #{pod_name}: #{commit[0..7]}..."
111
- return commit
112
- elsif checkout_info[:tag] || checkout_info['tag']
113
- tag = checkout_info[:tag] || checkout_info['tag']
114
- Pod::UI.puts "📋 Using tag for #{pod_name}: #{tag}"
115
- return tag
116
- end
41
+ # 如果checkout_options中没有版本信息,则使用dependency中的版本信息
42
+ dependency = sandbox.manifest.dependencies.find { |d| d.name == pod_name }
43
+ if dependency
44
+ UI.puts "🔍 get pod dependency version: #{pod_name}"
45
+ external_source = dependency.external_source
46
+ if external_source
47
+ UI.puts "🔍 get pod dependency version podspec: #{external_source}"
48
+ if external_source[:commit]
49
+ UI.puts "🔍 get pod dependency version commit: #{pod_name}# - #{external_source[:commit]}"
50
+ return external_source[:commit]
117
51
  end
118
-
119
- # 查找版本信息
120
- pods = podfile_content['PODS'] || []
121
- Pod::UI.puts "🔍 Searching in #{pods.length} pod entries from Podfile.lock"
122
-
123
- pods.each do |pod_entry|
124
- if pod_entry.is_a?(Hash)
125
- pod_entry.each do |key, _|
126
- key_str = key.to_s
127
-
128
- # 使用更灵活的匹配逻辑,支持subspec
129
- match = key_str.match(/^#{Regexp.escape(pod_name)}\s*\(([^)]+)\)/)
130
- if match
131
- Pod::UI.puts "📋 Found exact match! Using version for #{pod_name}: #{match[1]}"
132
- return match[1]
133
- end
134
-
135
- # 如果精确匹配失败,尝试部分匹配
136
- if key_str.include?(pod_name) && key_str.include?('(')
137
- version_match = key_str.match(/\(([^)]+)\)/)
138
- if version_match
139
- Pod::UI.puts "📋 Found partial match! Using version for #{pod_name}: #{version_match[1]}"
140
- return version_match[1]
141
- end
142
- end
143
- end
144
- elsif pod_entry.is_a?(String)
145
- # String 格式:"PodName (1.0.0)"
146
-
147
- match = pod_entry.match(/^#{Regexp.escape(pod_name)}\s*\(([^)]+)\)/)
148
- if match
149
- Pod::UI.puts "📋 Found exact match! Using version for #{pod_name}: #{match[1]}"
150
- return match[1]
151
- end
152
-
153
- # 如果精确匹配失败,尝试部分匹配
154
- if pod_entry.include?(pod_name) && pod_entry.include?('(')
155
- version_match = pod_entry.match(/\(([^)]+)\)/)
156
- if version_match
157
- Pod::UI.puts "📋 Found partial match! Using version for #{pod_name}: #{version_match[1]}"
158
- return version_match[1]
159
- end
160
- end
161
- end
52
+ if external_source[:branch]
53
+ UI.puts "🔍 get pod dependency version branch: #{pod_name}# - #{external_source[:branch]}"
54
+ return external_source[:branch]
162
55
  end
163
-
164
- Pod::UI.puts "⚠️ No version found for #{pod_name} in Podfile.lock"
165
56
  end
166
-
167
- # 3. 如果无法从任何lockfile获取,使用时间戳作为版本
168
- timestamp = Time.now.strftime("%Y%m%d_%H%M%S")
169
- Pod::UI.puts "⚠️ Warning: Cannot find version/commit for #{pod_name} in lock files, using timestamp: #{timestamp}"
170
- return timestamp
171
- rescue => e
172
- timestamp = Time.now.strftime("%Y%m%d_%H%M%S")
173
- Pod::UI.puts "⚠️ Warning: Error getting version for #{pod_name}: #{e.message}, using timestamp: #{timestamp}"
174
- return timestamp
175
57
  end
58
+
59
+ # 如果checkout_options和dependency中没有版本信息,则使用podspec中的version
60
+ UI.puts "🔍 get pod spec version: #{pod_name}"
61
+ version = sandbox.manifest.version(pod_name).version
62
+ if version
63
+ UI.puts "🔍 get pod spec version: #{pod_name}# - #{version}"
64
+ return version
65
+ end
66
+
67
+ # 如果以上都失败,则返回unknown,理论上只要是正常的podfile.lock或者manifest.lock,都不会走到这里
68
+ UI.puts "🔍 get pod version failed: #{pod_name}"
69
+ return "unknown"
176
70
  end
177
71
 
178
72
  # 计算目录内容的哈希值(用于验证缓存完整性)
@@ -66,20 +66,20 @@ module Pod
66
66
  end
67
67
 
68
68
  class_attr_accessor :simulator_build_enabled
69
- simulator_build_enabled = true
69
+ self.simulator_build_enabled = true
70
70
 
71
71
  class_attr_accessor :min_deployment_target
72
- min_deployment_target = '14.0'
72
+ self.min_deployment_target = '14.0'
73
73
 
74
74
  private
75
75
  class_attr_accessor :prebuild_all
76
- prebuild_all = false
76
+ self.prebuild_all = false
77
77
 
78
78
  class_attr_accessor :bitcode_enabled
79
- bitcode_enabled = false
79
+ self.bitcode_enabled = false
80
80
 
81
81
  class_attr_accessor :dont_remove_source_code
82
- dont_remove_source_code = false
82
+ self.dont_remove_source_code = false
83
83
 
84
84
  class_attr_accessor :custom_build_options
85
85
  class_attr_accessor :custom_build_options_simulator
@@ -123,6 +123,10 @@ Pod::HooksManager.register('cocoapods-binary-matchup', :pre_install) do |install
123
123
  update = nil
124
124
  repo_update = nil
125
125
 
126
+ # pod install → update=false, repo_update=false
127
+ # pod update → update=true, repo_update=false
128
+ # pod install --repo-update → update=false, repo_update=true
129
+ # pod update --repo-update → update=true, repo_update=true
126
130
  include ObjectSpace
127
131
  ObjectSpace.each_object(Pod::Installer) { |installer|
128
132
  update = installer.update
@@ -26,6 +26,7 @@ module Pod
26
26
  UI.puts "prebuild_pods_changes"
27
27
  UI.puts "--------------------------------"
28
28
  if @prebuild_pods_changes.nil?
29
+ # detect the changes with podfile by manifest.lock
29
30
  changes = local_manifest.detect_changes_with_podfile(podfile)
30
31
  @prebuild_pods_changes = Analyzer::SpecsState.new(changes)
31
32
  # save the chagnes info for later stage
@@ -1,3 +1,3 @@
1
1
  module CocoapodsBinary
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.14"
3
3
  end
@@ -19,9 +19,12 @@ module Pod
19
19
  end
20
20
 
21
21
  # --- patch ---
22
+ # filter the pods that should be prebuild(all_binary! or binary => true),remember the pod is must remote pod
23
+ # this will be effective when enable_prebuild_patch is true(the binary prebuild step)
24
+ # when in system step, the enable_prebuild_patch is false, so the original method will be called
22
25
  old_method = instance_method(:pod)
23
-
24
26
  define_method(:pod) do |name, *args|
27
+ # if not enable, just call the original method
25
28
  if !@@enable_prebuild_patch
26
29
  old_method.bind(self).(name, *args)
27
30
  return
@@ -56,6 +59,8 @@ module Pod
56
59
  @@force_disable_integration = value
57
60
  end
58
61
 
62
+ # prebuild step's purpose is to build source target code or copy the prebuild framework to the target,
63
+ # so we need to disable the original method
59
64
  old_method = instance_method(:integrate_user_project)
60
65
  define_method(:integrate_user_project) do
61
66
  if @@force_disable_integration
@@ -14,8 +14,11 @@ module Pod
14
14
  should_prebuild = Pod::Podfile::DSL.prebuild_all
15
15
 
16
16
  options = requirements.last
17
+ # 如果options是hash,并且包含Pod::Prebuild.keyword,则设置should_prebuild为true
17
18
  if options.is_a?(Hash) && options[Pod::Prebuild.keyword] != nil
19
+ # [DINetwork', { :binary => true, :configurations => ['Debug'] }]
18
20
  should_prebuild = options.delete(Pod::Prebuild.keyword)
21
+ # [DINetwork', { :configurations => ['Debug'] }],避免干扰其他配置,不删除可能让后续cocoapods本身解析报错
19
22
  requirements.pop if options.empty?
20
23
  end
21
24
 
@@ -55,6 +58,7 @@ module Pod
55
58
  # ---- patch method ----
56
59
  # We want modify `store_pod` method, but it's hard to insert a line in the
57
60
  # implementation. So we patch a method called in `store_pod`.
61
+ # use this method to parse prebuild framework(:binary => true)
58
62
  old_method = instance_method(:parse_inhibit_warnings)
59
63
 
60
64
  define_method(:parse_inhibit_warnings) do |name, requirements|
@@ -80,7 +84,6 @@ module Pod
80
84
 
81
85
  UI.puts "🔍 Processing #{aggregate_target.name}:"
82
86
  UI.puts "🔍 pod_targets count: #{targets.count}"
83
- UI.puts "🔍 pod_targets: #{targets.map(&:pod_name).join(', ')}" if targets.count < 10
84
87
 
85
88
  # filter prebuild
86
89
  prebuild_names = target_definition.prebuild_framework_names
@@ -98,7 +101,6 @@ module Pod
98
101
  end
99
102
 
100
103
  all = all.reject {|pod_target| sandbox.local?(pod_target.pod_name) }
101
- UI.puts "🔍 prebuild_pod_targets: #{all.map(&:pod_name).join(', ')}"
102
104
  all.uniq
103
105
  end
104
106
 
@@ -0,0 +1,54 @@
1
+ require File.expand_path('../spec_helper', __FILE__)
2
+
3
+ describe "CocoaPods Binary Matchup Plugin" do
4
+ it "should load the plugin" do
5
+ Pod::Prebuild.keyword.should == :binary
6
+ end
7
+
8
+ it "should load successfully" do
9
+ # 简单验证插件加载成功
10
+ defined?(Pod::Prebuild).should.not.be.nil
11
+ end
12
+
13
+ it "should have basic constants defined" do
14
+ # 验证基本常量存在
15
+ Pod.constants.should.include?(:Prebuild)
16
+ end
17
+
18
+ it "should define DSL instance methods" do
19
+ # 验证实例方法存在(这些是在Podfile中使用的方法)
20
+ # instance_methods是反射方法,用于获取所有的实例方法,注意false代表不获取父类
21
+ dsl_methods = Pod::Podfile::DSL.instance_methods(false)
22
+ dsl_methods.should.include?(:all_binary!)
23
+ dsl_methods.should.include?(:enable_bitcode_for_prebuilt_frameworks!)
24
+ dsl_methods.should.include?(:keep_source_code_for_prebuilt_frameworks!)
25
+ dsl_methods.should.include?(:min_deployment_target)
26
+ dsl_methods.should.include?(:simulator_build_disable!)
27
+ dsl_methods.should.include?(:set_custom_xcodebuild_options_for_prebuilt_frameworks)
28
+ end
29
+
30
+ it "should have correct default values for public attributes" do
31
+ # 验证公开的默认配置值
32
+ Pod::Podfile::DSL.simulator_build_enabled.should == true
33
+ # should是bacon中的测试断言,这里的意思是min_deployment_target应该等于'14.0'
34
+ Pod::Podfile::DSL.min_deployment_target.should == '14.0'
35
+ end
36
+
37
+ it "should allow setting min_deployment_target" do
38
+ # 验证可以设置最小部署目标
39
+ original_target = Pod::Podfile::DSL.min_deployment_target
40
+ Pod::Podfile::DSL.min_deployment_target = '15.0'
41
+ Pod::Podfile::DSL.min_deployment_target.should == '15.0'
42
+ # 恢复原值
43
+ Pod::Podfile::DSL.min_deployment_target = original_target
44
+ end
45
+
46
+ it "should allow toggling simulator build" do
47
+ # 验证可以切换模拟器构建设置
48
+ original_value = Pod::Podfile::DSL.simulator_build_enabled
49
+ Pod::Podfile::DSL.simulator_build_enabled = false
50
+ Pod::Podfile::DSL.simulator_build_enabled.should == false
51
+ # 恢复原值
52
+ Pod::Podfile::DSL.simulator_build_enabled = original_value
53
+ end
54
+ end
data/spec/spec_helper.rb CHANGED
@@ -10,7 +10,7 @@ require 'pretty_bacon'
10
10
  require 'pathname'
11
11
  require 'cocoapods'
12
12
 
13
- Mocha::Configuration.prevent(:stubbing_non_existent_method)
13
+ # Mocha::Configuration.prevent(:stubbing_non_existent_method) # 兼容性问题,暂时注释
14
14
 
15
15
  require 'cocoapods_plugin'
16
16
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-binary-matchup
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.14
5
5
  platform: ruby
6
6
  authors:
7
7
  - leavez
@@ -63,14 +63,14 @@ dependencies:
63
63
  requirements:
64
64
  - - "~>"
65
65
  - !ruby/object:Gem::Version
66
- version: '1.3'
66
+ version: 2.6.9
67
67
  type: :development
68
68
  prerelease: false
69
69
  version_requirements: !ruby/object:Gem::Requirement
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '1.3'
73
+ version: 2.6.9
74
74
  - !ruby/object:Gem::Dependency
75
75
  name: rake
76
76
  requirement: !ruby/object:Gem::Requirement
@@ -96,10 +96,10 @@ files:
96
96
  - ".gitignore"
97
97
  - ".travis.yml"
98
98
  - Gemfile
99
+ - Gemfile.lock
99
100
  - LICENSE.txt
100
101
  - README.md
101
102
  - Rakefile
102
- - cocoapods-binary-matchup-0.0.6.gem
103
103
  - cocoapods-binary-matchup.gemspec
104
104
  - lib/cocoapods-binary-matchup/Integration.rb
105
105
  - lib/cocoapods-binary-matchup/Integration_cache.rb
@@ -115,6 +115,7 @@ files:
115
115
  - lib/cocoapods-binary-matchup/tool/tool.rb
116
116
  - lib/cocoapods-binary.rb
117
117
  - lib/cocoapods_plugin.rb
118
+ - spec/plugin_spec.rb
118
119
  - spec/spec_helper.rb
119
120
  homepage: https://github.com/omiapp/cocoapod_binary_matchup
120
121
  licenses:
@@ -139,4 +140,5 @@ specification_version: 4
139
140
  summary: A CocoaPods plugin to integrate pods in form of prebuilt frameworks, not
140
141
  source code, by adding just one flag in podfile. Speed up compiling dramatically.
141
142
  test_files:
143
+ - spec/plugin_spec.rb
142
144
  - spec/spec_helper.rb
Binary file