cocoapods-bb-PodAssistant 0.2.1 → 0.2.3
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-bb-PodAssistant/command/stable/install.rb +1 -0
- data/lib/cocoapods-bb-PodAssistant/command/stable/push.rb +10 -8
- data/lib/cocoapods-bb-PodAssistant/command/stable/update.rb +1 -0
- data/lib/cocoapods-bb-PodAssistant/config/source_manager.rb +144 -6
- data/lib/cocoapods-bb-PodAssistant/gem_version.rb +1 -1
- data/lib/cocoapods-bb-PodAssistant/helpers/pod_module_helper.rb +42 -5
- data/lib/cocoapods-bb-PodAssistant/helpers/stable_env_helper.rb +8 -1
- data/lib/cocoapods-bb-PodAssistant/helpers/stable_manager_helper.rb +12 -3
- data/lib/cocoapods-bb-PodAssistant/native/installer.rb +48 -0
- data/lib/cocoapods-bb-PodAssistant/source_provider_hook.rb +184 -184
- metadata +18 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: db18fa9c11519008cc3187769f5aa81c9a8460b7eff538c9b277f3cefdd443c6
|
4
|
+
data.tar.gz: 28d2897172a135d0a74ddeddf4e9cfc9782f3a956b06c1aa546e18240695d2bf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: '0843133052d9eb17e2defc372439be5242c621b13fbe24c98fee6f6cfbb2b93d24abb452f7edf1df91ee8bab3ed5d7658a38ac8da0f187acc58e8f9d1765fd6a'
|
7
|
+
data.tar.gz: dc2656f219568af7fa787ab911683e64a9245d53d213ae628db6aa1e2c04a890d6c10a26ed24e885dda2345f17af1f93056df4f47675673f5e0dcd78cbd3513f
|
@@ -10,11 +10,11 @@ module Pod
|
|
10
10
|
self.description = <<-DESC
|
11
11
|
常用命令如下:\n
|
12
12
|
更新所有公共组件: `pod stable push`\n
|
13
|
-
更新指定公共组件: `pod stable push
|
14
|
-
更新指定公共组件/移除组件: `pod stable push
|
15
|
-
更新指定公共组件/带依赖关系: `pod stable push
|
16
|
-
更新指定公共组件/带依赖关系/移除组件: `pod stable push
|
17
|
-
参数说明:--dependencies 依赖组件 --remove 需要移除组件 --update-matrix 更新矩阵产品公共业务线
|
13
|
+
更新指定公共组件: `pod stable push <组件名称>`\n
|
14
|
+
更新指定公共组件/移除组件: `pod stable push <组件名称> --remove=组件名称` #多个移除名称带`,`\n
|
15
|
+
更新指定公共组件/带依赖关系: `pod stable push <组件名称> --dependencies=组件名称` #多个依赖名称带`,`\n
|
16
|
+
更新指定公共组件/带依赖关系/移除组件: `pod stable push <组件名称> --dependencies=组件名称 --remove=组件名称` #多个依赖名称带`,`\n
|
17
|
+
参数说明:--dependencies 依赖组件 --remove 需要移除组件 --update-matrix 更新矩阵产品公共业务线 --update-common 更新公共组件
|
18
18
|
DESC
|
19
19
|
|
20
20
|
self.arguments = [
|
@@ -25,7 +25,8 @@ module Pod
|
|
25
25
|
[
|
26
26
|
['--dependencies', '依赖组件名称,多个使用`,`隔开'],
|
27
27
|
['--remove', '移除公共组件名称,多个使用`,`隔开'],
|
28
|
-
['--update-matrix', '
|
28
|
+
['--update-matrix', '更新[矩阵]产品公共业务线,默认true'],
|
29
|
+
['--update-common', '更新公共组件,默认false'],
|
29
30
|
].concat(super)
|
30
31
|
end
|
31
32
|
|
@@ -33,13 +34,14 @@ module Pod
|
|
33
34
|
@pods = argv.arguments!
|
34
35
|
@dependencies = argv.option('dependencies', nil)&.split(',')
|
35
36
|
@remove = argv.option('remove', nil)&.split(',')
|
36
|
-
@
|
37
|
+
@is_pub = argv.flag?('update-common', false)
|
38
|
+
@is_matrix = !@is_pub # argv.flag?('update-matrix', true)
|
37
39
|
super
|
38
40
|
end
|
39
41
|
|
40
42
|
def run
|
41
43
|
puts "[PodAssistant] 开始执行 $ pod stable push".yellow
|
42
|
-
source_manager = BB::SourceManager.new(false)
|
44
|
+
source_manager = BB::SourceManager.new(false, @is_matrix)
|
43
45
|
cachePath = source_manager.cache_path
|
44
46
|
puts "stable cache git=>#{cachePath}"
|
45
47
|
Dir.chdir(File.join(cachePath)) {
|
@@ -7,8 +7,8 @@ require 'cocoapods-bb-PodAssistant/helpers/stable_env_helper'
|
|
7
7
|
# 数据源管理
|
8
8
|
module BB
|
9
9
|
class SourceManager
|
10
|
-
def initialize(verify_stable_env=true)
|
11
|
-
@env = BB::StableEnv.new(verify_stable_env)
|
10
|
+
def initialize(verify_stable_env=true, isMatrix=false)
|
11
|
+
@env = BB::StableEnv.new(verify_stable_env, isMatrix)
|
12
12
|
@businessSpecName = @env.business_stable
|
13
13
|
@stableMgr = BB::StableManager.new(@env, verify_stable_env)
|
14
14
|
end
|
@@ -182,6 +182,12 @@ module BB
|
|
182
182
|
stable_specs[YAML_CONFIG_REMOVE_KEY] = removedata
|
183
183
|
stable_specs[YAML_CONFIG_DEPENDENCIES_KEY] = dependenciesdata
|
184
184
|
update_stable_lock(stable_yaml, stable_specs)
|
185
|
+
puts "removedata:#{removedata} len:#{removedata.length}".red
|
186
|
+
puts "dependenciesdata:#{dependenciesdata} count:#{dependenciesdata.length}".red
|
187
|
+
# 提交依赖/移除数据
|
188
|
+
if removedata.length > 0 || dependenciesdata.length > 0
|
189
|
+
@stableMgr.commit_data(stable_yaml, "dependencies:#{dependenciesdata} remove:#{removedata}")
|
190
|
+
end
|
185
191
|
end
|
186
192
|
end
|
187
193
|
def update_common_dependencies_and_remove_data(dependencies_pods, remove_pods)
|
@@ -218,10 +224,11 @@ module BB
|
|
218
224
|
if (update_pods.length == 0) || (update_pods.include?(podCoreName))
|
219
225
|
if versionGreat(version, local_version)
|
220
226
|
updated_projects << "【#{name}】 (#{local_version}) -> (#{version.to_s.send(:yellow)})"
|
227
|
+
need_update_pod_lists[podCoreName] = version
|
221
228
|
else
|
229
|
+
# 本地指向分支,以本地为主
|
222
230
|
rollbacked_projects << "【#{name}】 (#{version.to_s.send(:red)}) <- (#{local_version})"
|
223
231
|
end
|
224
|
-
need_update_pod_lists[podCoreName] = version
|
225
232
|
end
|
226
233
|
end
|
227
234
|
end
|
@@ -320,13 +327,137 @@ module BB
|
|
320
327
|
return lockfile
|
321
328
|
end
|
322
329
|
|
330
|
+
def name_and_version_from_string(string_representation)
|
331
|
+
match_data = string_representation.match(/\A((?:\s?[^\s(])+)(?: \((.+)\))?\Z/)
|
332
|
+
unless match_data
|
333
|
+
raise Informative, 'Invalid string representation for a ' \
|
334
|
+
"specification: `#{string_representation}`. " \
|
335
|
+
'The string representation should include the name and ' \
|
336
|
+
'optionally the version of the Pod.'
|
337
|
+
end
|
338
|
+
name = match_data[1]
|
339
|
+
vers = Pod::Version.new(match_data[2])
|
340
|
+
[name, vers]
|
341
|
+
end
|
342
|
+
def name_from_string(string_representation)
|
343
|
+
match_data = string_representation.match(/\A((?:\s?[^\s(])+)(?: \((.+)\))?\Z/)
|
344
|
+
unless match_data
|
345
|
+
raise Informative, 'Invalid string representation for a ' \
|
346
|
+
"specification: `#{string_representation}`. " \
|
347
|
+
'The string representation should include the name and ' \
|
348
|
+
'optionally the version of the Pod.'
|
349
|
+
end
|
350
|
+
name = match_data[1]
|
351
|
+
return name
|
352
|
+
end
|
353
|
+
def podfile_lock_pods
|
354
|
+
lockfile = podfile_lock
|
355
|
+
internal_data = lockfile.internal_data
|
356
|
+
pods = internal_data['PODS']
|
357
|
+
list={}
|
358
|
+
pods.each do |pod|
|
359
|
+
if pod.is_a?(Hash) # 存在依赖关系
|
360
|
+
pod_name = pod.keys.first
|
361
|
+
name, version = name_and_version_from_string(pod_name)
|
362
|
+
data = pod[pod_name]
|
363
|
+
data.each do | pod |
|
364
|
+
dependencies_pod_name = name_from_string(pod)
|
365
|
+
data = list[name]
|
366
|
+
if data.nil?
|
367
|
+
sub_data=[]
|
368
|
+
sub_data.push(dependencies_pod_name)
|
369
|
+
list[name]=sub_data
|
370
|
+
else
|
371
|
+
data.push(dependencies_pod_name)
|
372
|
+
list[name]=data
|
373
|
+
end
|
374
|
+
end
|
375
|
+
end
|
376
|
+
end
|
377
|
+
return list
|
378
|
+
end
|
379
|
+
def whitelist_podnames
|
380
|
+
return ['BBPostion', 'FMDB', 'Masonry', 'lottie-ios', 'SDWebImage', 'SSZipArchive', 'YYModel']
|
381
|
+
end
|
382
|
+
# 矩阵产品需要过滤组件
|
383
|
+
def matrix_filter_pod_names(pods, ignore_dependencies_pod_names=[])
|
384
|
+
ignore_dependencies_pod_names=['BBSAdvert'] unless ignore_dependencies_pod_names.nil? # 如果业务方配置,以业务方为主,默认处理广告业务
|
385
|
+
find_ok_dependencies_pod_names=[]
|
386
|
+
filter_pod_names=[]
|
387
|
+
whitelist_pods={}
|
388
|
+
whitelist = whitelist_podnames
|
389
|
+
# 查找需要进行过滤数据,解决多场景下组件动态更新,以广告为例
|
390
|
+
if ignore_dependencies_pod_names.length > 0
|
391
|
+
puts "业务方配置需要过滤数据:#{ignore_dependencies_pod_names} cls:#{ignore_dependencies_pod_names.class}".yellow
|
392
|
+
pods.each do |pod|
|
393
|
+
if pod.is_a?(Hash) # 存在依赖关系
|
394
|
+
pod_name = pod.keys.first
|
395
|
+
name, version = name_and_version_from_string(pod_name)
|
396
|
+
podCoreName = subspec_podname(name)
|
397
|
+
if ignore_dependencies_pod_names.include?(podCoreName) || find_ok_dependencies_pod_names.include?(name)
|
398
|
+
if !find_ok_dependencies_pod_names.include?(name)
|
399
|
+
find_ok_dependencies_pod_names.push(name)
|
400
|
+
end
|
401
|
+
sub_pods=[]
|
402
|
+
data = pod[pod_name]
|
403
|
+
data.each do | pod |
|
404
|
+
dependencies_pod_name = name_from_string(pod)
|
405
|
+
if dependencies_pod_name.include?(name) #subspecs
|
406
|
+
if !find_ok_dependencies_pod_names.include?(dependencies_pod_name)
|
407
|
+
find_ok_dependencies_pod_names.push(dependencies_pod_name)
|
408
|
+
end
|
409
|
+
end
|
410
|
+
if !sub_pods.include?(dependencies_pod_name)
|
411
|
+
sub_pods.push(dependencies_pod_name)
|
412
|
+
end
|
413
|
+
tmp_whitelist_pod_names = whitelist_pods[podCoreName]
|
414
|
+
if (podCoreName != name) && !tmp_whitelist_pod_names.include?(dependencies_pod_name)
|
415
|
+
dependencies_core_pod_name = subspec_podname(dependencies_pod_name)
|
416
|
+
if (podCoreName != dependencies_core_pod_name) && !whitelist.include?(dependencies_core_pod_name) && !filter_pod_names.include?(dependencies_core_pod_name)
|
417
|
+
filter_pod_names.push(dependencies_core_pod_name)
|
418
|
+
end
|
419
|
+
end
|
420
|
+
end
|
421
|
+
if podCoreName == name
|
422
|
+
whitelist_pods[podCoreName]=sub_pods
|
423
|
+
end
|
424
|
+
end
|
425
|
+
end
|
426
|
+
end
|
427
|
+
puts "过滤组件数据依赖:#{find_ok_dependencies_pod_names} cls:#{find_ok_dependencies_pod_names.class}"
|
428
|
+
# puts "==whitelist_pods:#{whitelist_pods} cls:#{whitelist_pods.class}".red
|
429
|
+
puts "需要过滤一级黑名单数据:#{filter_pod_names} cls:#{filter_pod_names.class}".yellow
|
430
|
+
if filter_pod_names.length > 0
|
431
|
+
pods_list = podfile_lock_pods
|
432
|
+
pods_list.keys.each do | pod_name |
|
433
|
+
podCoreName = subspec_podname(pod_name)
|
434
|
+
if filter_pod_names.include?(podCoreName)
|
435
|
+
data = pods_list[pod_name]
|
436
|
+
data.each do | sub_pod_name |
|
437
|
+
sub_podCoreName = subspec_podname(sub_pod_name)
|
438
|
+
if !sub_podCoreName.include?('BB') && !whitelist.include?(sub_podCoreName) && !filter_pod_names.include?(sub_podCoreName)
|
439
|
+
filter_pod_names.push(sub_podCoreName)
|
440
|
+
end
|
441
|
+
end
|
442
|
+
end
|
443
|
+
end
|
444
|
+
puts "需要过滤all黑名单数据:#{filter_pod_names} cls:#{filter_pod_names.class}".yellow
|
445
|
+
end
|
446
|
+
end
|
447
|
+
return filter_pod_names
|
448
|
+
end
|
323
449
|
# 生成项目stable配置文件
|
324
450
|
# 策略:根据podfile.lock dependencies依赖记录pod core标签/分支数据,不存储subspec数据
|
325
|
-
def generate_localStable
|
451
|
+
def generate_localStable(ignore_dependencies_pod_names=[])
|
326
452
|
lockfile = podfile_lock
|
327
453
|
local_specs = {}
|
454
|
+
internal_data = lockfile.internal_data
|
455
|
+
pods = internal_data['PODS']
|
328
456
|
dependencies = lockfile.dependencies
|
329
457
|
pod_names = lockfile.pod_names
|
458
|
+
# puts "dependencies:#{dependencies}".red
|
459
|
+
# puts "pod_names:#{pod_names}".green
|
460
|
+
filter_pod_names = matrix_filter_pod_names(pods, ignore_dependencies_pod_names)
|
330
461
|
# dependencies依赖数据
|
331
462
|
dependencies.each do | dependency |
|
332
463
|
pod_name = dependency.name
|
@@ -377,10 +508,17 @@ module BB
|
|
377
508
|
end
|
378
509
|
end
|
379
510
|
|
380
|
-
#
|
511
|
+
# 删除过滤数据
|
512
|
+
filter_pod_names.each do | pod_name |
|
513
|
+
if local_specs.include?(pod_name)
|
514
|
+
# puts "删除过滤数据pod_name:#{pod_name} #{local_specs[pod_name]}"
|
515
|
+
local_specs.delete(pod_name)
|
516
|
+
end
|
517
|
+
end
|
518
|
+
# puts "yml配置数据:#{local_specs}"
|
381
519
|
if local_specs.length > 0
|
382
520
|
update_localstable_datas(local_specs)
|
383
|
-
|
521
|
+
puts "Generating yml配置文件=> #{local_stable_yaml} 更新成功".green
|
384
522
|
end
|
385
523
|
end
|
386
524
|
# pod库是否包含core subspec
|
@@ -25,13 +25,29 @@ module BB
|
|
25
25
|
@source_manager = BB::SourceManager.new()
|
26
26
|
#加载远程稳定仓库 和本地podfile 指定的仓库进行合并
|
27
27
|
if skip_stable_check == true
|
28
|
-
|
28
|
+
# 过滤带:remove数据
|
29
|
+
@@all_modules = filter_origin_pod_modules(all_modules)
|
29
30
|
else
|
30
31
|
@@all_modules = load_stable_specs_to_podfile(all_modules, ignore_local_stable)
|
31
32
|
end
|
32
33
|
@@member_modules = member_modules
|
33
34
|
@@member_configs = member_configs
|
34
35
|
end
|
36
|
+
private def filter_origin_pod_modules(all_modules)
|
37
|
+
result_modules = []
|
38
|
+
all_modules.each do |pod|
|
39
|
+
if pod.is_a?(Hash)
|
40
|
+
remove = pod[:remove]
|
41
|
+
if remove
|
42
|
+
pod_name = pod.first
|
43
|
+
puts "###业务方配置需要移除插件####names:[#{pod_name}] pod:#{pod}".red
|
44
|
+
else
|
45
|
+
result_modules.push(pod)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
return result_modules
|
50
|
+
end
|
35
51
|
|
36
52
|
def current_member
|
37
53
|
if @@member_configs
|
@@ -153,6 +169,23 @@ module BB
|
|
153
169
|
}
|
154
170
|
return podfile_hash
|
155
171
|
end
|
172
|
+
# stable本地数据去除指向本地
|
173
|
+
def convert_local_stable_data(local_stable_data)
|
174
|
+
stable_hash = {}
|
175
|
+
local_stable_data.each do |name,pod|
|
176
|
+
if pod.is_a? Hash
|
177
|
+
path = pod[:path]
|
178
|
+
if path
|
179
|
+
puts "filter local path data:#{name}".red
|
180
|
+
else
|
181
|
+
stable_hash[name] = pod
|
182
|
+
end
|
183
|
+
else
|
184
|
+
stable_hash[name] = pod
|
185
|
+
end
|
186
|
+
end
|
187
|
+
return stable_hash
|
188
|
+
end
|
156
189
|
# 合并组建数据
|
157
190
|
# 策略:本地stable作为基础数据,遍历podfile组件进行替换,变化以本地为主,标签以stable为主
|
158
191
|
def merge_module_data(podfile_specs, local_stable_data)
|
@@ -161,7 +194,8 @@ module BB
|
|
161
194
|
# puts "podfile_hash: #{podfile_hash}".red
|
162
195
|
# puts "local_stable_data: #{local_stable_data}".red
|
163
196
|
need_update_pod_data={}
|
164
|
-
|
197
|
+
# fix 指向本地组件切换到远端组件,本地yml配置不会更新问题
|
198
|
+
stable_hash = convert_local_stable_data(local_stable_data) # stable_hash = local_stable_data
|
165
199
|
podfile_hash.each do |podName,podfile_pod|
|
166
200
|
if podfile_pod.count == 0
|
167
201
|
puts "❌ podfile组件[#{podName}]配置异常,请确认:method => REMOTE_VERSION是否配置\n组件信息如下:\n#{podName} => #{podfile_pod}".red
|
@@ -222,10 +256,11 @@ module BB
|
|
222
256
|
if pod.is_a? (Hash)
|
223
257
|
stable_branch = pod[:branch]
|
224
258
|
stable_git = pod[:git]
|
259
|
+
stable_path = pod[:path]
|
225
260
|
if stable_git.nil?
|
226
261
|
stable_git = pod[:git_format]
|
227
262
|
end
|
228
|
-
if (stable_branch && !stable_branch.empty?) || (stable_git && !stable_git.empty?)
|
263
|
+
if (stable_branch && !stable_branch.empty?) || (stable_git && !stable_git.empty?) || (stable_path && !stable_path.empty?)
|
229
264
|
puts "[PodAssistant] '#{podName}', '#{podfile_pod}' 以podfile配置为主[分支=>标签]."
|
230
265
|
newPod = podfile_pod
|
231
266
|
is_podfile_data = true
|
@@ -233,7 +268,7 @@ module BB
|
|
233
268
|
newPod = pod
|
234
269
|
end
|
235
270
|
elsif pod.is_a? (String)
|
236
|
-
if pod.include?(':branch') || pod.include?(':git') || pod.include?(':git_format')
|
271
|
+
if pod.include?(':branch') || pod.include?(':git') || pod.include?(':git_format') || pod.include?(':path')
|
237
272
|
puts "[PodAssistant] '#{podName}', '#{podfile_pod}' 以podfile配置为主[分支=>标签]."
|
238
273
|
newPod = podfile_pod
|
239
274
|
is_podfile_data = true
|
@@ -315,15 +350,17 @@ module BB
|
|
315
350
|
data[:linkage] = linkage
|
316
351
|
end
|
317
352
|
if !data.empty?
|
318
|
-
# puts "
|
353
|
+
# puts "===git===分支==> #{data}".green
|
319
354
|
stable_specs.push(data)
|
320
355
|
end
|
321
356
|
elsif pod.is_a? String
|
357
|
+
# puts "===git===标签==> { names: [\"#{name}\"], version: #{pod}, method: REMOTE_TAG }".green
|
322
358
|
stable_specs.push({ names: [name], version: pod, method: REMOTE_TAG })
|
323
359
|
else
|
324
360
|
puts "unknow type [#{name}] data:#{pod}".red
|
325
361
|
end
|
326
362
|
end
|
363
|
+
# puts "[PodAssistant] stable_specs:#{stable_specs}".green
|
327
364
|
return stable_specs
|
328
365
|
end
|
329
366
|
################################# linkline stable ����� #################################
|
@@ -2,8 +2,9 @@ require 'cocoapods-bb-PodAssistant/config/stable_source'
|
|
2
2
|
|
3
3
|
module BB
|
4
4
|
class StableEnv
|
5
|
-
def initialize(verify_stable_env=true)
|
5
|
+
def initialize(verify_stable_env=true, isMatrix=false)
|
6
6
|
@cache = BB::Cache.new(nil, verify_stable_env)
|
7
|
+
@isMatrix = isMatrix
|
7
8
|
configGitPath(@cache.cachePath)
|
8
9
|
if verify_stable_env
|
9
10
|
# 自动加载stable环境
|
@@ -101,8 +102,14 @@ module BB
|
|
101
102
|
return @stable_tag
|
102
103
|
end
|
103
104
|
def business_stable
|
105
|
+
if @businessSpec.nil? && @isMatrix
|
106
|
+
return default_matrix_business_stable
|
107
|
+
end
|
104
108
|
return @businessSpec
|
105
109
|
end
|
110
|
+
def default_matrix_business_stable
|
111
|
+
return "global_stable_specs"
|
112
|
+
end
|
106
113
|
# 验证stable环境是否存在
|
107
114
|
def verify_stable_env_exists
|
108
115
|
return @stable_source.empty? ? false : true
|
@@ -25,8 +25,14 @@ module BB
|
|
25
25
|
puts "没有配置业务线公共源,请确认!!!".yellow
|
26
26
|
end
|
27
27
|
end
|
28
|
-
|
29
|
-
|
28
|
+
# 提交数据
|
29
|
+
def commit_data(yml_path, commit_msg="")
|
30
|
+
puts "commit_stable_lock commit_msg:#{commit_msg}".red
|
31
|
+
commit_stable_lock_data(yml_path, commit_msg)
|
32
|
+
end
|
33
|
+
|
34
|
+
# podfile 更新配置文件使用(项目)
|
35
|
+
def update_product_stable_lock(pod_targets)
|
30
36
|
update_local_stable_lock(local_stable_yaml, pod_targets)
|
31
37
|
end
|
32
38
|
|
@@ -61,9 +67,12 @@ module BB
|
|
61
67
|
stableSpec = BB::StableSpecs.new()
|
62
68
|
stableSpec.update_stable_lock(yml_path, pod_targets)
|
63
69
|
# step.2 提交修改后代码
|
70
|
+
commit_stable_lock_data(yml_path)
|
71
|
+
end
|
72
|
+
private def commit_stable_lock_data(yml_path, commit_msg="")
|
64
73
|
yml_name = File.basename(yml_path)
|
65
74
|
# `cd #{cachePath}; git pull --all; git add #{yml_name}; git commit -m "[update] 更新stable配置文件#{yml_name}"; git push; git pull --all;`
|
66
|
-
`cd #{cachePath}; git pull --all; git add * ; git commit -m "[update] 更新stable配置文件#{yml_name}"; git push; git pull --all;`
|
75
|
+
`cd #{cachePath}; git pull --all; git add * ; git commit -m "[update] 更新stable配置文件#{yml_name} #{commit_msg}"; git push; git pull --all;`
|
67
76
|
end
|
68
77
|
private def update_local_stable_lock(yml_path, pod_targets)
|
69
78
|
# step.1 更新yaml配置文件
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'active_support/core_ext/string/inflections'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'cocoapods/podfile'
|
4
|
+
require 'cocoapods-bb-bin/native'
|
5
|
+
|
6
|
+
module Pod
|
7
|
+
class Installer
|
8
|
+
autoload :Analyzer, 'cocoapods/installer/analyzer'
|
9
|
+
autoload :InstallationOptions, 'cocoapods/installer/installation_options'
|
10
|
+
autoload :PostInstallHooksContext, 'cocoapods/installer/post_install_hooks_context'
|
11
|
+
autoload :PreInstallHooksContext, 'cocoapods/installer/pre_install_hooks_context'
|
12
|
+
autoload :BaseInstallHooksContext, 'cocoapods/installer/base_install_hooks_context'
|
13
|
+
autoload :PostIntegrateHooksContext, 'cocoapods/installer/post_integrate_hooks_context'
|
14
|
+
autoload :PreIntegrateHooksContext, 'cocoapods/installer/pre_integrate_hooks_context'
|
15
|
+
autoload :SourceProviderHooksContext, 'cocoapods/installer/source_provider_hooks_context'
|
16
|
+
autoload :PodfileValidator, 'cocoapods/installer/podfile_validator'
|
17
|
+
autoload :PodSourceDownloader, 'cocoapods/installer/pod_source_downloader'
|
18
|
+
autoload :PodSourceInstaller, 'cocoapods/installer/pod_source_installer'
|
19
|
+
autoload :PodSourcePreparer, 'cocoapods/installer/pod_source_preparer'
|
20
|
+
autoload :UserProjectIntegrator, 'cocoapods/installer/user_project_integrator'
|
21
|
+
autoload :Xcode, 'cocoapods/installer/xcode'
|
22
|
+
autoload :SandboxHeaderPathsInstaller, 'cocoapods/installer/sandbox_header_paths_installer'
|
23
|
+
autoload :SandboxDirCleaner, 'cocoapods/installer/sandbox_dir_cleaner'
|
24
|
+
autoload :ProjectCache, 'cocoapods/installer/project_cache/project_cache'
|
25
|
+
autoload :TargetUUIDGenerator, 'cocoapods/installer/target_uuid_generator'
|
26
|
+
|
27
|
+
include Config::Mixin
|
28
|
+
|
29
|
+
# alias_method :origin_resolve_dependencies, :resolve_dependencies
|
30
|
+
# def resolve_dependencies
|
31
|
+
# puts "[PodAssistant] 开始执行 Installer resolve_dependencies".red
|
32
|
+
# puts "[PodAssistant] 开始执行 Installer resolve_dependencies [#{$*}] [#{$*.first}]".green
|
33
|
+
# analyzer = origin_resolve_dependencies
|
34
|
+
# puts "analyzer:#{analyzer}".green
|
35
|
+
# if ($*.first == "update" || $*.first == "install")
|
36
|
+
# puts 'Analyzing dependencies virtual'.red
|
37
|
+
# # UI.section 'Analyzing dependencies virtual' do
|
38
|
+
# $virtual_dependencies_names = @analysis_result.specifications.map(&:name)
|
39
|
+
# $virtual_dependencies_flag = true
|
40
|
+
# analyzer = origin_resolve_dependencies
|
41
|
+
# # end
|
42
|
+
# end
|
43
|
+
# puts "analyzer:#{analyzer}".red
|
44
|
+
# analyzer
|
45
|
+
# end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
@@ -72,12 +72,12 @@ module BB
|
|
72
72
|
$source_manager.generate_localStable
|
73
73
|
$podEndTime = Time.new
|
74
74
|
puts "[PodAssistant] plugin hook post_install".yellow
|
75
|
-
puts "[PodAssistant] pod库下载耗时 GitCloneAllSize: #{$gitAllSize} M GitCloneAllTime: #{$cloneAllTime} S CDNDownloadAllSize: #{$pluginCurrentZipAllSize} M CDNAllTime: #{$downloadAllTime} S CDNDownloadAllTime: #{$cdnDownloadAllTime} S CDNUnzipAllTime: #{$cdnUnZipAllTime} S"
|
76
|
-
# 如果是--verbose模式且$gitAllSize与$cloneAllTime(不为0表示有下载pod)
|
77
|
-
if $pluginIsVerbose == true && $gitAllSize != 0 && $cloneAllTime != 0 && $pluginCurrentZipAllSize != 0 && $downloadAllTime != 0
|
78
|
-
|
79
|
-
|
80
|
-
end
|
75
|
+
# puts "[PodAssistant] pod库下载耗时 GitCloneAllSize: #{$gitAllSize} M GitCloneAllTime: #{$cloneAllTime} S CDNDownloadAllSize: #{$pluginCurrentZipAllSize} M CDNAllTime: #{$downloadAllTime} S CDNDownloadAllTime: #{$cdnDownloadAllTime} S CDNUnzipAllTime: #{$cdnUnZipAllTime} S"
|
76
|
+
# # 如果是--verbose模式且$gitAllSize与$cloneAllTime(不为0表示有下载pod)
|
77
|
+
# if $pluginIsVerbose == true && $gitAllSize != 0 && $cloneAllTime != 0 && $pluginCurrentZipAllSize != 0 && $downloadAllTime != 0
|
78
|
+
# File.rename "#{Dir.home}/.AllPodsTimeAndSize.csv", "#{installer.sandbox_root}/AllPodsTimeAndSize.csv"
|
79
|
+
# puts "具体的统计数据请在#{installer.sandbox_root}/AllPodsTimeAndSize.csv中查看"
|
80
|
+
# end
|
81
81
|
# 获取时间差
|
82
82
|
time = $podEndTime - $podStartTime
|
83
83
|
puts "[PodAssistant] pod操作总耗时【#{time.to_s.send(:red)}秒】start:#{$podStartTime} end:#{$podEndTime}".green
|
@@ -87,202 +87,202 @@ module BB
|
|
87
87
|
end
|
88
88
|
end
|
89
89
|
|
90
|
-
class Pod::Downloader::Cache
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
90
|
+
# class Pod::Downloader::Cache
|
91
|
+
# # 使用方法别名hook copy_and_clean方法
|
92
|
+
# alias :origin_copy_and_clean :copy_and_clean
|
93
|
+
# def copy_and_clean(source, destination, spec)
|
94
|
+
# # 执行之前的拷贝到cache并且清除git clone临时目录的方法
|
95
|
+
# origin_copy_and_clean(source, destination, spec)
|
96
|
+
# # 如果是--verbose,则输出详细信息,生成csv
|
97
|
+
# if $pluginIsVerbose == true
|
98
|
+
# verboseCopy_and_clean(source, destination, spec)
|
99
|
+
# end
|
100
|
+
# end
|
101
101
|
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
102
|
+
# # --verbose输出详细信息,生成在home路径下.AllPodsTimeAndSize.csv的隐藏文件
|
103
|
+
# def verboseCopy_and_clean(source, destination, spec)
|
104
|
+
# begin
|
105
|
+
# # 计算拷贝到的目录下所有文件总大小,单位为M
|
106
|
+
# dirSum = Dir.size(destination.to_s)/1000.0/1000.0
|
107
|
+
# # 标红输出cache文件大小,单位为M
|
108
|
+
# puts "[PodAssistant] cachesize #{spec.name}: "+"#{dirSum}"+" M"
|
109
|
+
# # 如果相等则为CDN的下载方式
|
110
|
+
# if $gitSize == 0
|
111
|
+
# # CDN的下载方式
|
112
|
+
# CSV.open("#{Dir.home}/.AllPodsTimeAndSize.csv", "a+") do |csv|
|
113
|
+
# csv << [spec.name, $downloadTime, $pluginCurrentZipSize, dirSum, "CDN不统计此项", "CDN", $cdnDownloadTime, $cdnUnZipTime]
|
114
|
+
# end
|
115
|
+
# else
|
116
|
+
# # git的下载方式
|
117
|
+
# # 计算git clone大小和cache文件大小的差值,如果差值过大,则有优化空间
|
118
|
+
# diffSize = $gitSize - dirSum
|
119
|
+
# # 标红输出差值
|
120
|
+
# puts "[PodAssistant] diffSize = #{diffSize}"+"M "
|
121
|
+
# CSV.open("#{Dir.home}/.AllPodsTimeAndSize.csv", "a+") do |csv|
|
122
|
+
# csv << [spec.name, $cloneTime, $gitSize, dirSum, diffSize, "Git", "Git不统计此项", "Git不统计此项"]
|
123
|
+
# end
|
124
|
+
# end
|
125
125
|
|
126
|
-
|
127
|
-
|
126
|
+
# # 换行
|
127
|
+
# puts
|
128
128
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
end
|
129
|
+
# rescue => exception
|
130
|
+
# # 输出拷贝清除方法异常
|
131
|
+
# puts "[PodAssistant] verboseCopy_and_clean error(已捕获): #{exception}".red
|
132
|
+
# end
|
133
|
+
# $gitSize = 0
|
134
|
+
# end
|
135
|
+
# end
|
136
136
|
|
137
137
|
|
138
|
-
class Pod::Downloader::Cache
|
138
|
+
# class Pod::Downloader::Cache
|
139
139
|
|
140
|
-
|
140
|
+
# alias :origin_download :download
|
141
141
|
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
142
|
+
# def download(request, target)
|
143
|
+
# # 获取downloader下载的文件路径
|
144
|
+
# source = target.to_s
|
145
|
+
# # 赋值当前正在下载的文件路径给全局变量,为了解压zip的时候做判断
|
146
|
+
# $pluginCurrentTarget = source
|
147
|
+
# # 赋值当前正在下载的pod名称给全局变量,为了解压zip的时候做输出
|
148
|
+
# $pluginCurrentPodName = request.name.to_s
|
149
|
+
# # 获取clone执行前时间点
|
150
|
+
# time1 = Time.new
|
151
|
+
# # 执行之前的download_source方法,接收该方法的返回值
|
152
|
+
# result, podspecs = origin_download(request, target)
|
153
153
|
|
154
|
-
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
|
161
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
154
|
+
# # 如果不是--verbose,只输出总耗时,总下载大小
|
155
|
+
# # 捕获一下异常,不会因为plugin的原因导致pod失败
|
156
|
+
# begin
|
157
|
+
# # 获取clone执行后时间点
|
158
|
+
# time2 = Time.new
|
159
|
+
# # 获取时间差
|
160
|
+
# time = time2 - time1
|
161
|
+
# if request.params["git".to_sym]
|
162
|
+
# # 说明是git方式
|
163
|
+
# # 赋值一个给全局变量,之后时间统计要用到
|
164
|
+
# $cloneTime = time
|
165
|
+
# # 赋值一个给全局变量,之后时间统计要用到
|
166
|
+
# $cloneAllTime = $cloneAllTime + time
|
167
|
+
# # 计算downloader下载的文件大小,单位为M
|
168
|
+
# dirSum = Dir.size(source)/1000.0/1000.0
|
169
|
+
# # 赋值给一个全局变量,之后输出会用到
|
170
|
+
# $gitAllSize = $gitAllSize + dirSum
|
171
|
+
# else
|
172
|
+
# # 说明是CDN方式
|
173
|
+
# # 赋值一个给全局变量,之后时间统计要用到
|
174
|
+
# $downloadTime = time
|
175
|
+
# # 赋值一个给全局变量,之后时间统计要用到
|
176
|
+
# $downloadAllTime = $downloadAllTime + time
|
177
|
+
# # 赋值给一个全局变量,之后输出会用到
|
178
|
+
# $cdnDownloadAllTime = $cdnDownloadAllTime + $cdnDownloadTime
|
179
|
+
# # 赋值给一个全局变量,之后输出会用到
|
180
|
+
# $cdnUnZipAllTime = $cdnUnZipAllTime + $cdnUnZipTime
|
181
|
+
# # 赋值给一个全局变量,之后输出会用到
|
182
|
+
# $pluginCurrentZipAllSize = $pluginCurrentZipAllSize + $pluginCurrentZipSize
|
183
|
+
# end
|
184
184
|
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
185
|
+
# # 如果是--verbose,则输出详细信息,生成csv
|
186
|
+
# if $pluginIsVerbose == true
|
187
|
+
# verboseDownload(request, time, dirSum)
|
188
|
+
# end
|
189
|
+
# # 返回值
|
190
|
+
# [result, podspecs]
|
191
|
+
# rescue => exception
|
192
|
+
# # 标红输出git clone hook异常
|
193
|
+
# puts "[PodAssistant] download error(已捕获): #{exception}"
|
194
|
+
# end
|
195
|
+
# end
|
196
196
|
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
197
|
+
# def verboseDownload(request, time, dirSum)
|
198
|
+
# if request.params["git".to_sym]
|
199
|
+
# # 说明是git方式
|
200
|
+
# # 标红输出git clone耗时
|
201
|
+
# puts "[PodAssistant] #{request.name.to_s} clone time: #{time}"+" S"
|
202
|
+
# # 赋值给一个全局变量,之后输出会用到
|
203
|
+
# $gitSize = dirSum
|
204
|
+
# # 标红输出git clone下载文件大小
|
205
|
+
# puts "[PodAssistant] #{request.name.to_s} clone allsize: "+"#{dirSum}"+" M"
|
206
|
+
# else
|
207
|
+
# # 说明是CDN方式
|
208
|
+
# # 标红输出CDN 下载耗时
|
209
|
+
# puts "[PodAssistant] #{request.name.to_s} CDN download time: #{$cdnDownloadTime}"+" S"
|
210
|
+
# # 标红输出CDN 解压耗时
|
211
|
+
# puts "[PodAssistant] #{request.name.to_s} CDN unzip time: #{$cdnUnZipTime}"+" S"
|
212
|
+
# # 标红输出CDN 总耗时
|
213
|
+
# puts "[PodAssistant] #{request.name.to_s} CDN All time: #{$downloadTime}"+" S"
|
214
|
+
# # 标红输出CDN clone下载文件大小
|
215
|
+
# puts "[PodAssistant] #{request.name.to_s} CDN zipSize: "+"#{$pluginCurrentZipSize}"+" M"
|
216
|
+
# end
|
217
217
|
|
218
|
-
|
218
|
+
# end
|
219
219
|
|
220
|
-
end
|
220
|
+
# end
|
221
221
|
|
222
|
-
class Pod::Downloader::Http
|
223
|
-
|
224
|
-
|
225
|
-
|
222
|
+
# class Pod::Downloader::Http
|
223
|
+
# # 使用方法别名hook解压方法,获取解压之前的文件大小
|
224
|
+
# alias :origin_download_file :download_file
|
225
|
+
# alias :origin_extract_with_type :extract_with_type
|
226
226
|
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
227
|
+
# def download_file(_full_filename)
|
228
|
+
# # 捕获一下异常,不会因为plugin的原因导致pod失败
|
229
|
+
# begin
|
230
|
+
# if _full_filename.to_s.include?($pluginCurrentTarget)
|
231
|
+
# # 说明是之前被赋值的开始下载了
|
232
232
|
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
233
|
+
# # 获取CDN下载执行前时间点
|
234
|
+
# time1 = Time.new
|
235
|
+
# # 执行原来的CDN下载方法
|
236
|
+
# origin_download_file(_full_filename)
|
237
|
+
# # 获取CDN下载执行后时间点
|
238
|
+
# time2 = Time.new
|
239
|
+
# # 赋值CDN下载耗时给全局变量,用于之后输出以及写在csv中
|
240
|
+
# $cdnDownloadTime = time2 - time1
|
241
|
+
# else
|
242
|
+
# # 说明不是之前被赋值的开始下载了,输出一下,然后清空
|
243
|
+
# puts "[PodAssistant] unzip warning: #{$pluginCurrentTarget} target error"
|
244
|
+
# puts "[PodAssistant] unzip warning: #{$pluginCurrentPodName} name error"
|
245
|
+
# $pluginCurrentTarget = ""
|
246
|
+
# $pluginCurrentPodName = ""
|
247
|
+
# end
|
248
|
+
# rescue => exception
|
249
|
+
# # 输出CDM下载方法异常
|
250
|
+
# puts "[PodAssistant] download_file error(已捕获): #{exception}"
|
251
|
+
# end
|
252
252
|
|
253
|
-
|
253
|
+
# end
|
254
254
|
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
255
|
+
# def extract_with_type(full_filename, type = :zip)
|
256
|
+
# # 捕获一下异常,不会因为plugin的原因导致pod失败
|
257
|
+
# begin
|
258
|
+
# if full_filename.to_s.include?($pluginCurrentTarget)
|
259
|
+
# # 说明是之前被赋值的下载完成了,开始进行解压了
|
260
260
|
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
|
267
|
-
|
268
|
-
|
269
|
-
|
270
|
-
|
271
|
-
|
272
|
-
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
end
|
261
|
+
# # 计算拷贝到的目录下所有文件总大小,单位为M
|
262
|
+
# dirSum = File.size(full_filename.to_s)/1000.0/1000.0
|
263
|
+
# # 赋值给当前正在解压的zip大小,之后输出到csv要用
|
264
|
+
# $pluginCurrentZipSize = dirSum
|
265
|
+
# else
|
266
|
+
# # 说明不是之前被赋值的下载完成了,输出一下,然后清空
|
267
|
+
# puts "[PodAssistant] unzip warning: #{$pluginCurrentTarget} target error"
|
268
|
+
# puts "[PodAssistant] unzip warning: #{$pluginCurrentPodName} name error"
|
269
|
+
# $pluginCurrentTarget = ""
|
270
|
+
# $pluginCurrentPodName = ""
|
271
|
+
# end
|
272
|
+
# rescue => exception
|
273
|
+
# # 输出CDN解压方法异常
|
274
|
+
# puts "[PodAssistant] extract_with_type error(已捕获): #{exception}"
|
275
|
+
# end
|
276
|
+
# # 获取CDN解压前时间点
|
277
|
+
# time1 = Time.new
|
278
|
+
# # 执行之前的解压方法
|
279
|
+
# origin_extract_with_type(full_filename, type)
|
280
|
+
# # 获取CDN解压后时间点
|
281
|
+
# time2 = Time.new
|
282
|
+
# # 赋值CDN解压耗时给全局变量,用于之后输出以及写在csv中
|
283
|
+
# $cdnUnZipTime = time2 - time1
|
284
|
+
# end
|
285
|
+
# end
|
286
286
|
|
287
287
|
# class Pod::Downloader::Git
|
288
288
|
# # 使用方法别名hook clone方法
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-bb-PodAssistant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- humin
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-12-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods-core
|
@@ -38,6 +38,20 @@ dependencies:
|
|
38
38
|
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 1.10.0
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: cocoapods-bb-bin
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.2.7.7
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.2.7.7
|
41
55
|
- !ruby/object:Gem::Dependency
|
42
56
|
name: bundler
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -103,6 +117,7 @@ files:
|
|
103
117
|
- lib/cocoapods-bb-PodAssistant/helpers/stable_env_helper.rb
|
104
118
|
- lib/cocoapods-bb-PodAssistant/helpers/stable_manager_helper.rb
|
105
119
|
- lib/cocoapods-bb-PodAssistant/helpers/yaml_files_helper.rb
|
120
|
+
- lib/cocoapods-bb-PodAssistant/native/installer.rb
|
106
121
|
- lib/cocoapods-bb-PodAssistant/podfile.rb
|
107
122
|
- lib/cocoapods-bb-PodAssistant/source_provider_hook.rb
|
108
123
|
- lib/cocoapods_plugin.rb
|
@@ -127,7 +142,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
127
142
|
- !ruby/object:Gem::Version
|
128
143
|
version: '0'
|
129
144
|
requirements: []
|
130
|
-
rubygems_version: 3.4.
|
145
|
+
rubygems_version: 3.4.22
|
131
146
|
signing_key:
|
132
147
|
specification_version: 4
|
133
148
|
summary: A longer description of cocoapods-bb-PodAssistant.
|