cocoapods-meitu-bin 1.1.4 → 1.2.0
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-meitu-bin/command/bin/get_checksum.rb +37 -0
- data/lib/cocoapods-meitu-bin/command/bin.rb +1 -0
- data/lib/cocoapods-meitu-bin/config/config.rb +15 -0
- data/lib/cocoapods-meitu-bin/gem_version.rb +1 -1
- data/lib/cocoapods-meitu-bin/helpers/buildAll/builder.rb +15 -1
- data/lib/cocoapods-meitu-bin/helpers/buildAll/podspec_util.rb +1 -2
- data/lib/cocoapods-meitu-bin/native/installer.rb +19 -2
- data/lib/cocoapods-meitu-bin/source_provider_hook.rb +88 -28
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 20e39980aef9bdfc449829f36825d3e494276a9c40dfeacc6315567c61aa54da
|
4
|
+
data.tar.gz: aee80d60a26a5938112fd2e26982d0ed5efa7d811c38bea89b06f3820c75165e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4520ca7be915df41b5918edcfacf04231d6962c20d9186925f382c45968f98af2c023d92d15d35f5d40c67ec5a3e3d1e88033c14415975f5383274e56a5fd14a
|
7
|
+
data.tar.gz: d00fab77b0354c225e06c425d90e6b7601a99c4e7c315c498f5ff28484ea882cc54b085ac3382ec2bca87cae9d4184c97de0c7ef2655cc4bdc39705a7a2af6ee
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require 'digest'
|
2
|
+
module Pod
|
3
|
+
class Command
|
4
|
+
class Bin < Command
|
5
|
+
class GetChecksum < Bin
|
6
|
+
self.summary = '根据输入的podfile路径返回该podfile对应checksum(类似文件MD5值)'
|
7
|
+
self.description = <<-DESC
|
8
|
+
#{summary}
|
9
|
+
DESC
|
10
|
+
|
11
|
+
def self.options
|
12
|
+
[
|
13
|
+
%w[--path=podfile路径]
|
14
|
+
].concat(super).uniq
|
15
|
+
end
|
16
|
+
|
17
|
+
def initialize(argv)
|
18
|
+
@path = argv.option('path', "")
|
19
|
+
super
|
20
|
+
end
|
21
|
+
|
22
|
+
def run
|
23
|
+
puts calculate_checksum(@path)
|
24
|
+
end
|
25
|
+
# 计算checksum值
|
26
|
+
def calculate_checksum(file_path)
|
27
|
+
return "" unless File.exist?(file_path)
|
28
|
+
content = File.read(file_path)
|
29
|
+
checksum = Digest::SHA1.hexdigest(content)
|
30
|
+
checksum = checksum.encode('UTF-8') if checksum.respond_to?(:encode)
|
31
|
+
return checksum
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -8,6 +8,7 @@ require 'cocoapods-meitu-bin/command/bin/repo'
|
|
8
8
|
require 'cocoapods-meitu-bin/command/bin/spec'
|
9
9
|
require 'cocoapods-meitu-bin/command/bin/build_all'
|
10
10
|
require 'cocoapods-meitu-bin/command/bin/output_source'
|
11
|
+
require 'cocoapods-meitu-bin/command/bin/get_checksum.rb'
|
11
12
|
require 'cocoapods-meitu-bin/command/bin/header_files_specifications'
|
12
13
|
require 'cocoapods-meitu-bin/command/bin/upload'
|
13
14
|
require 'cocoapods-meitu-bin/command/bin/lock'
|
@@ -151,6 +151,8 @@ end
|
|
151
151
|
class PodUpdateConfig
|
152
152
|
@@pods = []
|
153
153
|
@@lockfile = nil
|
154
|
+
@@repo_update = true
|
155
|
+
@@prepare_time = 0
|
154
156
|
def self.add_value(value)
|
155
157
|
@@pods << value
|
156
158
|
end
|
@@ -161,6 +163,19 @@ class PodUpdateConfig
|
|
161
163
|
@@lockfile
|
162
164
|
end
|
163
165
|
# 一个类方法,用于显示数组中的值
|
166
|
+
def self.repo_update
|
167
|
+
@@repo_update
|
168
|
+
end
|
169
|
+
def self.set_repo_update
|
170
|
+
@@repo_update = false
|
171
|
+
end
|
172
|
+
def self.set_prepare_time(time)
|
173
|
+
@@prepare_time = time
|
174
|
+
end
|
175
|
+
def self.prepare_time
|
176
|
+
@@prepare_time
|
177
|
+
end
|
178
|
+
|
164
179
|
def self.pods
|
165
180
|
@@pods
|
166
181
|
end
|
@@ -348,8 +348,22 @@ ibtool \
|
|
348
348
|
fwks_dir = "#{result_product_dir}/fwks"
|
349
349
|
FileUtils.mkdir(fwks_dir) unless File.exist?(fwks_dir)
|
350
350
|
fwks.map do |fwk|
|
351
|
-
|
351
|
+
new_fwk = get_XCFrameworkIntermediates_path(fwk)
|
352
|
+
if new_fwk && File.exist?(new_fwk)
|
353
|
+
`rsync -av #{new_fwk} #{fwks_dir}`
|
354
|
+
else
|
355
|
+
`rsync -av #{fwk} #{fwks_dir}`
|
356
|
+
end
|
357
|
+
end
|
358
|
+
end
|
359
|
+
def get_XCFrameworkIntermediates_path(path)
|
360
|
+
# 使用正则表达式匹配并提取 AdsFramework
|
361
|
+
match = path.to_s.match(/\/([^\/]+)\.xcframework/)
|
362
|
+
if match
|
363
|
+
framework_path = "#{product_dir}/#{iphoneos}/XCFrameworkIntermediates/#{match[1]}/#{match[1]}.framework"
|
364
|
+
return framework_path
|
352
365
|
end
|
366
|
+
return nil
|
353
367
|
end
|
354
368
|
|
355
369
|
# 拷贝 framework
|
@@ -27,7 +27,7 @@ module CBin
|
|
27
27
|
# 处理vendored_libraries和vendored_frameworks
|
28
28
|
spec['vendored_libraries'] = "#{root_dir}/libs/*.a"
|
29
29
|
#兼容.xcframework
|
30
|
-
spec['vendored_frameworks'] = %W[#{root_dir} #{root_dir}/fwks/*.framework
|
30
|
+
spec['vendored_frameworks'] = %W[#{root_dir} #{root_dir}/fwks/*.framework]
|
31
31
|
# 处理资源
|
32
32
|
resources = %W[#{root_dir}/*.{#{special_resource_exts.join(',')}} #{root_dir}/resources/*]
|
33
33
|
spec['resources'] = resources
|
@@ -66,7 +66,6 @@ module CBin
|
|
66
66
|
repo_name = Pod::Config.instance.sources_manager.binary_source.name
|
67
67
|
# repo_name = 'example-private-spec-bin'
|
68
68
|
argvs = %W[#{repo_name} #{binary_podsepc_json} --skip-import-validation --use-libraries --allow-warnings --verbose]
|
69
|
-
|
70
69
|
begin
|
71
70
|
push = Pod::Command::Repo::Push.new(CLAide::ARGV.new(argvs))
|
72
71
|
push.validate!
|
@@ -35,6 +35,7 @@ module Pod
|
|
35
35
|
# 依赖分析
|
36
36
|
alias old_resolve_dependencies resolve_dependencies
|
37
37
|
def resolve_dependencies
|
38
|
+
start_time = Time.now
|
38
39
|
list = PodUpdateConfig.pods
|
39
40
|
# 判断 PodUpdateConfig.pods 是否为空,且数组大于0
|
40
41
|
if list && !list.empty?
|
@@ -43,8 +44,24 @@ module Pod
|
|
43
44
|
if PodUpdateConfig.lockfile
|
44
45
|
self.instance_variable_set("@lockfile",PodUpdateConfig.lockfile)
|
45
46
|
end
|
46
|
-
|
47
|
-
|
47
|
+
|
48
|
+
plugin_sources = run_source_provider_hooks
|
49
|
+
analyzer = create_analyzer(plugin_sources)
|
50
|
+
|
51
|
+
UI.section 'Updating local specs repositories' do
|
52
|
+
analyzer.update_repositories
|
53
|
+
end if repo_update? && PodUpdateConfig.repo_update
|
54
|
+
|
55
|
+
UI.section 'Analyzing dependencies' do
|
56
|
+
analyze(analyzer)
|
57
|
+
validate_build_configurations
|
58
|
+
end
|
59
|
+
|
60
|
+
UI.section 'Verifying no changes' do
|
61
|
+
verify_no_podfile_changes!
|
62
|
+
verify_no_lockfile_changes!
|
63
|
+
end if deployment?
|
64
|
+
cost_time_hash['prepare'] = PodUpdateConfig.prepare_time
|
48
65
|
cost_time_hash['resolve_dependencies'] = Time.now - start_time
|
49
66
|
analyzer
|
50
67
|
end
|
@@ -2,6 +2,7 @@ require 'cocoapods-meitu-bin/native/sources_manager'
|
|
2
2
|
require 'cocoapods-meitu-bin/command/bin/repo/update'
|
3
3
|
require 'cocoapods-meitu-bin/config/config'
|
4
4
|
require 'cocoapods/user_interface'
|
5
|
+
require 'digest'
|
5
6
|
require 'yaml'
|
6
7
|
require 'cocoapods'
|
7
8
|
|
@@ -24,20 +25,33 @@ def get_podfile_lock
|
|
24
25
|
if is_load_podfile_lock
|
25
26
|
#获取 PODFILE CHECKSUM 用来判断服务端是否存在该podfile.lock
|
26
27
|
checksum = Pod::Config.instance.podfile.checksum
|
27
|
-
puts checksum
|
28
|
-
# lock = Pod::Config.instance.lockfile
|
29
|
-
# list = lock.internal_data['SPEC REPOS']['https://github.com/CocoaPods/Specs.git']
|
30
|
-
# #遍历 list
|
31
|
-
# name_list = []
|
32
|
-
# list.each do |item|
|
33
|
-
# name_list << item
|
34
|
-
# # `echo #{item} >> /Users/sunxianglong/Desktop/work/data.txt`
|
35
|
-
# end
|
28
|
+
Pod::UI.puts "当前podfile文件的checksum:#{checksum}".green
|
36
29
|
# zip下载地址
|
37
30
|
curl = "https://xiuxiu-dl-meitu-com.obs.cn-north-4.myhuaweicloud.com/ios/binary/MTXX/#{checksum}/podfile.lock.zip"
|
38
|
-
#
|
31
|
+
# 判断服务端是否存在该podfile.lock
|
32
|
+
is_load_podfile_lock = false
|
39
33
|
if system("curl -o /dev/null -s -w %{http_code} #{curl} | grep 200 > /dev/null 2>&1")
|
40
|
-
puts "
|
34
|
+
Pod::UI.puts "匹配到精准podfile.lock文件,使用当前podfile文件的checksum:#{checksum}获取对应的podfile.lock文件".green
|
35
|
+
is_load_podfile_lock = true
|
36
|
+
end
|
37
|
+
|
38
|
+
if !is_load_podfile_lock
|
39
|
+
branch_value = get_branch_name
|
40
|
+
curl = "https://xiuxiu-dl-meitu-com.obs.cn-north-4.myhuaweicloud.com/ios/binary/MTXX/#{branch_value}/podfile.lock.zip"
|
41
|
+
if system("curl -o /dev/null -s -w %{http_code} #{curl} | grep 200 > /dev/null 2>&1")
|
42
|
+
Pod::UI.puts "无法匹配到精准podfile.lock文件,使用当前分支:#{branch_value} 对应的podfile.lock文件".green
|
43
|
+
is_load_podfile_lock = true
|
44
|
+
end
|
45
|
+
#兜底使用develop的podfile.lock
|
46
|
+
if !is_load_podfile_lock
|
47
|
+
Pod::UI.puts "服务端不存在该podfile.lock文件,使用develop分支的podfile.lock文件兜底".green
|
48
|
+
curl = "https://xiuxiu-dl-meitu-com.obs.cn-north-4.myhuaweicloud.com/ios/binary/MTXX/develop/podfile.lock.zip"
|
49
|
+
is_load_podfile_lock = true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
# 判断是否需要下载podfile.lock文件
|
53
|
+
if is_load_podfile_lock
|
54
|
+
Pod::UI.puts "获取服务端存储的podfile.lcok文件".green
|
41
55
|
#下载并解压的podfile.zip文件
|
42
56
|
if system("curl -O #{curl} > /dev/null 2>&1") && system("unzip -o podfile.lock.zip > /dev/null 2>&1")
|
43
57
|
Pod::UI.puts "下载并解压podfile.lcok文件成功".green
|
@@ -52,14 +66,8 @@ def get_podfile_lock
|
|
52
66
|
PodUpdateConfig.lockfile
|
53
67
|
)
|
54
68
|
analyzer.update_repositories
|
69
|
+
PodUpdateConfig.set_repo_update
|
55
70
|
analyzer.analyze(true)
|
56
|
-
|
57
|
-
# analyzer.instance_variable_get("@result").pod_targets.each do |pod_target|
|
58
|
-
# if name_list.include?(pod_target.name)
|
59
|
-
# # "#{SPEC_NAME}/#{VERSION}/#{SPEC_NAME}.podspec"
|
60
|
-
# end
|
61
|
-
# end
|
62
|
-
|
63
71
|
#获取analyzer中所有git 且branch 指向的pod
|
64
72
|
Pod::Config.instance.podfile.dependencies.map do |dependency|
|
65
73
|
if dependency.external_source && dependency.external_source[:git] && (dependency.external_source[:branch] || (dependency.external_source.size == 1))
|
@@ -88,10 +96,9 @@ def upload_podfile_lock(checksum,upload = false)
|
|
88
96
|
curl = "https://xiuxiu-dl-meitu-com.obs.cn-north-4.myhuaweicloud.com/ios/binary/MTXX/#{checksum}/podfile.lock.zip"
|
89
97
|
# 服务端不存在该podfiel.lock文件才上传,避免频繁上报同一个文件
|
90
98
|
if upload || !system("curl -o /dev/null -s -w %{http_code} #{curl} | grep 200 > /dev/null 2>&1")
|
91
|
-
Pod::UI.puts "上报podfile.lcok文件到服务端".green
|
92
|
-
puts Pod::Config.instance.podfile.checksum
|
99
|
+
Pod::UI.puts "根据checksum:#{checksum}上报podfile.lcok文件到服务端".green
|
93
100
|
if upload
|
94
|
-
puts "mbox
|
101
|
+
puts "mbox工作目录/mtxx/MTXX/podfile 对应的checksum = #{checksum}"
|
95
102
|
end
|
96
103
|
if system("zip podfile.lock.zip Podfile.lock > /dev/null 2>&1") && system("curl -F \"name=MTXX\" -F \"version=#{checksum}\" -F \"file=@#{Pathname.pwd}/podfile.lock.zip\" http://nezha.community.cloud.meitu.com/file/upload.json > /dev/null 2>&1")
|
97
104
|
Pod::UI.puts "上报podfile.lcok文件到服务端成功".green
|
@@ -109,18 +116,62 @@ end
|
|
109
116
|
def upload_mbox_podfile_lock
|
110
117
|
begin
|
111
118
|
podfile_path = Pod::Config.instance.installation_root + 'mtxx/MTXX' + 'Podfile'
|
112
|
-
|
113
|
-
if
|
114
|
-
upload_podfile_lock(
|
119
|
+
checksum = get_checksum(podfile_path)
|
120
|
+
if checksum && checksum.is_a?(String) && checksum.length > 0
|
121
|
+
upload_podfile_lock(checksum,true )
|
115
122
|
end
|
116
123
|
rescue => error
|
117
124
|
puts "mbox podfile.lcok文件兼容处理失败,失败原因:#{error}"
|
118
125
|
end
|
119
126
|
end
|
127
|
+
def upload_branch_podfile_lock
|
128
|
+
begin
|
129
|
+
branch_value = get_branch_name
|
130
|
+
if branch_value && branch_value.is_a?(String) && branch_value.length > 0
|
131
|
+
if system("zip podfile.lock.zip Podfile.lock > /dev/null 2>&1") && system("curl -F \"name=MTXX\" -F \"version=#{branch_value}\" -F \"file=@#{Pathname.pwd}/podfile.lock.zip\" http://nezha.community.cloud.meitu.com/file/upload.json > /dev/null 2>&1")
|
132
|
+
Pod::UI.puts "根据开发分支名:#{branch_value}上报podfile.lcok文件到服务端成功".green
|
133
|
+
`rm -rf podfile.lock.zip`
|
134
|
+
else
|
135
|
+
Pod::UI.puts "根据开发分支名:#{branch_value}上报podfile.lcok文件到服务端失败".red
|
136
|
+
`rm -rf podfile.lock.zip`
|
137
|
+
end
|
138
|
+
end
|
139
|
+
rescue => error
|
140
|
+
|
141
|
+
end
|
142
|
+
end
|
143
|
+
def get_branch_name
|
144
|
+
branch_value = ENV['branch']
|
145
|
+
if !branch_value
|
146
|
+
mtxx_path = Pod::Config.instance.installation_root + 'mtxx/MTXX'
|
147
|
+
#判读podfile文件是否存在
|
148
|
+
if File.exist?(mtxx_path)
|
149
|
+
Dir.chdir(mtxx_path) do
|
150
|
+
branch_value = `git symbolic-ref --short -q HEAD`
|
151
|
+
if branch_value == 'develop'
|
152
|
+
branch_value = ""
|
153
|
+
end
|
154
|
+
end
|
155
|
+
else
|
156
|
+
branch_value = `git symbolic-ref --short -q HEAD`
|
157
|
+
end
|
158
|
+
end
|
159
|
+
branch_value = branch_value.gsub("\n", "")
|
160
|
+
branch_value
|
161
|
+
end
|
162
|
+
|
163
|
+
def get_checksum(file_path)
|
164
|
+
return nil unless File.exist?(file_path)
|
165
|
+
content = File.read(file_path)
|
166
|
+
checksum = Digest::SHA1.hexdigest(content)
|
167
|
+
checksum = checksum.encode('UTF-8') if checksum.respond_to?(:encode)
|
168
|
+
return checksum
|
169
|
+
end
|
170
|
+
|
120
171
|
Pod::HooksManager.register('cocoapods-meitu-bin', :pre_install) do |_context|
|
172
|
+
start_time = Time.now
|
121
173
|
require 'cocoapods-meitu-bin/native'
|
122
174
|
require 'cocoapods-meitu-bin/helpers/buildAll/bin_helper'
|
123
|
-
|
124
175
|
Pod::UI.puts "当前configuration: `#{ENV['configuration'] || Pod::Config.instance.podfile.configuration}`".green
|
125
176
|
# checksum = Pod::Config.instance.podfile.checksum
|
126
177
|
# puts Pod::Config.instance
|
@@ -143,7 +194,7 @@ Pod::HooksManager.register('cocoapods-meitu-bin', :pre_install) do |_context|
|
|
143
194
|
end
|
144
195
|
|
145
196
|
end
|
146
|
-
|
197
|
+
PodUpdateConfig.set_prepare_time(Time.now - start_time)
|
147
198
|
# 同步 BinPodfile 文件
|
148
199
|
project_root = Pod::Config.instance.project_root
|
149
200
|
path = File.join(project_root.to_s, 'BinPodfile')
|
@@ -160,16 +211,25 @@ Pod::HooksManager.register('cocoapods-meitu-bin', :pre_install) do |_context|
|
|
160
211
|
raise Pod::DSLError.new(message, path, e, contents)
|
161
212
|
end
|
162
213
|
end
|
214
|
+
PodUpdateConfig.set_prepare_time(Time.now - start_time)
|
163
215
|
end
|
164
216
|
|
165
217
|
# 注册 pod install 钩子
|
166
218
|
Pod::HooksManager.register('cocoapods-meitu-bin', :post_install) do |context|
|
167
|
-
|
168
|
-
|
219
|
+
#基于podfile的checksum上报云端podfile.lock文件
|
220
|
+
podfile_path = Pod::Config.instance.installation_root + 'podfile'
|
221
|
+
# puts "#{podfile_path}".green
|
222
|
+
checksum = get_checksum(podfile_path)
|
223
|
+
# puts "#{checksum}".green
|
224
|
+
if checksum
|
225
|
+
upload_podfile_lock(checksum)
|
226
|
+
end
|
169
227
|
#判断是否在 mbox 工作目录执行pod install
|
170
228
|
if system("mbox status > /dev/null 2>&1")
|
171
229
|
upload_mbox_podfile_lock
|
172
230
|
end
|
231
|
+
#基于分支,上报podfile.lock文件
|
232
|
+
upload_branch_podfile_lock
|
173
233
|
end
|
174
234
|
|
175
235
|
Pod::HooksManager.register('cocoapods-meitu-bin', :source_provider) do |context, _|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-meitu-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jensen
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- lib/cocoapods-meitu-bin/command/bin/archive.rb
|
103
103
|
- lib/cocoapods-meitu-bin/command/bin/auto.rb
|
104
104
|
- lib/cocoapods-meitu-bin/command/bin/build_all.rb
|
105
|
+
- lib/cocoapods-meitu-bin/command/bin/get_checksum.rb
|
105
106
|
- lib/cocoapods-meitu-bin/command/bin/header_files_specifications.rb
|
106
107
|
- lib/cocoapods-meitu-bin/command/bin/init.rb
|
107
108
|
- lib/cocoapods-meitu-bin/command/bin/install.rb
|