cocoapods-meitu-bin 1.1.3 → 1.1.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- 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 +41 -8
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 466b8b10f18760c5cd7a468a4a4ee860bcec5650fc79be7622f4bd545eac6562
|
4
|
+
data.tar.gz: 140cfcba73e84f74f011a42d7d4e2f2a1c8366c5c74a3529d38da10b2c6b0f98
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5d00b8d229b43e33cd69997aa29f2856bde47fdd1701fc64ea9e0597bbd49e4758b1bd9b98de2f8fe2cf8d2e32af9e90fb083b2af134acdc5a39bfc440020c6
|
7
|
+
data.tar.gz: 8a0c5673d4ab1c328eba75fa07e9c48920e3d60571dca4214e32323defa762d139c94d298796d32e553eb7772685a485bc2a0df09fdc49f7fd3e6f84563a529c
|
@@ -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
|
@@ -16,7 +16,6 @@ def get_podfile_lock
|
|
16
16
|
end
|
17
17
|
# 判断是否有update参数 时不获取服务端podfile.lock文件
|
18
18
|
ARGV.each do |arg|
|
19
|
-
puts "pod 执行 #{arg}"
|
20
19
|
if arg == 'update'
|
21
20
|
is_load_podfile_lock = false
|
22
21
|
end
|
@@ -25,11 +24,23 @@ def get_podfile_lock
|
|
25
24
|
if is_load_podfile_lock
|
26
25
|
#获取 PODFILE CHECKSUM 用来判断服务端是否存在该podfile.lock
|
27
26
|
checksum = Pod::Config.instance.podfile.checksum
|
28
|
-
puts checksum
|
29
27
|
# zip下载地址
|
30
28
|
curl = "https://xiuxiu-dl-meitu-com.obs.cn-north-4.myhuaweicloud.com/ios/binary/MTXX/#{checksum}/podfile.lock.zip"
|
31
|
-
|
29
|
+
|
30
|
+
# 判断服务端是否存在该podfile.lock
|
31
|
+
is_load_podfile_lock = false
|
32
32
|
if system("curl -o /dev/null -s -w %{http_code} #{curl} | grep 200 > /dev/null 2>&1")
|
33
|
+
is_load_podfile_lock = true
|
34
|
+
end
|
35
|
+
branch_value = ENV['branch']
|
36
|
+
if !is_load_podfile_lock && branch_value && branch_value == 'develop'
|
37
|
+
curl = "https://xiuxiu-dl-meitu-com.obs.cn-north-4.myhuaweicloud.com/ios/binary/MTXX/develop/podfile.lock.zip"
|
38
|
+
if system("curl -o /dev/null -s -w %{http_code} #{curl} | grep 200 > /dev/null 2>&1")
|
39
|
+
is_load_podfile_lock = true
|
40
|
+
end
|
41
|
+
end
|
42
|
+
# 判断是否需要下载podfile.lock文件
|
43
|
+
if is_load_podfile_lock
|
33
44
|
puts "获取服务端存储的podfile.lcok文件".green
|
34
45
|
#下载并解压的podfile.zip文件
|
35
46
|
if system("curl -O #{curl} > /dev/null 2>&1") && system("unzip -o podfile.lock.zip > /dev/null 2>&1")
|
@@ -44,8 +55,9 @@ def get_podfile_lock
|
|
44
55
|
Pod::Config.instance.podfile,
|
45
56
|
PodUpdateConfig.lockfile
|
46
57
|
)
|
58
|
+
analyzer.update_repositories
|
59
|
+
PodUpdateConfig.set_repo_update
|
47
60
|
analyzer.analyze(true)
|
48
|
-
|
49
61
|
#获取analyzer中所有git 且branch 指向的pod
|
50
62
|
Pod::Config.instance.podfile.dependencies.map do |dependency|
|
51
63
|
if dependency.external_source && dependency.external_source[:git] && (dependency.external_source[:branch] || (dependency.external_source.size == 1))
|
@@ -103,19 +115,37 @@ def upload_mbox_podfile_lock
|
|
103
115
|
puts "mbox podfile.lcok文件兼容处理失败,失败原因:#{error}"
|
104
116
|
end
|
105
117
|
end
|
118
|
+
def upload_develop_podfile_lock
|
119
|
+
begin
|
120
|
+
branch_value = ENV['branch']
|
121
|
+
if branch_value && branch_value == 'develop'
|
122
|
+
if system("zip podfile.lock.zip Podfile.lock > /dev/null 2>&1") && system("curl -F \"name=MTXX\" -F \"version=develop\" -F \"file=@#{Pathname.pwd}/podfile.lock.zip\" http://nezha.community.cloud.meitu.com/file/upload.json > /dev/null 2>&1")
|
123
|
+
Pod::UI.puts "上报podfile.lcok文件到服务端成功".green
|
124
|
+
`rm -rf podfile.lock.zip`
|
125
|
+
else
|
126
|
+
Pod::UI.puts "上报podfile.lcok文件到服务端失败".red
|
127
|
+
`rm -rf podfile.lock.zip`
|
128
|
+
end
|
129
|
+
end
|
130
|
+
rescue => error
|
131
|
+
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
106
135
|
Pod::HooksManager.register('cocoapods-meitu-bin', :pre_install) do |_context|
|
136
|
+
start_time = Time.now
|
107
137
|
require 'cocoapods-meitu-bin/native'
|
108
138
|
require 'cocoapods-meitu-bin/helpers/buildAll/bin_helper'
|
109
|
-
|
110
139
|
Pod::UI.puts "当前configuration: `#{ENV['configuration'] || Pod::Config.instance.podfile.configuration}`".green
|
111
140
|
# checksum = Pod::Config.instance.podfile.checksum
|
112
141
|
# puts Pod::Config.instance
|
113
142
|
# installer = Installer.new(config.sandbox, config.podfile, config.lockfile)
|
114
143
|
# puts checksum
|
115
|
-
get_podfile_lock
|
116
144
|
# pod bin repo update 更新二进制私有源
|
117
145
|
Pod::Command::Bin::Repo::Update.new(CLAide::ARGV.new($ARGV)).run
|
118
146
|
|
147
|
+
get_podfile_lock
|
148
|
+
|
119
149
|
# 有插件/本地库 且是dev环境下,默认进入源码白名单 过滤 archive命令
|
120
150
|
if _context.podfile.plugins.keys.include?('cocoapods-meitu-bin') && _context.podfile.configuration_env == 'dev'
|
121
151
|
dependencies = _context.podfile.dependencies
|
@@ -128,7 +158,7 @@ Pod::HooksManager.register('cocoapods-meitu-bin', :pre_install) do |_context|
|
|
128
158
|
end
|
129
159
|
|
130
160
|
end
|
131
|
-
|
161
|
+
PodUpdateConfig.set_prepare_time(Time.now - start_time)
|
132
162
|
# 同步 BinPodfile 文件
|
133
163
|
project_root = Pod::Config.instance.project_root
|
134
164
|
path = File.join(project_root.to_s, 'BinPodfile')
|
@@ -145,16 +175,19 @@ Pod::HooksManager.register('cocoapods-meitu-bin', :pre_install) do |_context|
|
|
145
175
|
raise Pod::DSLError.new(message, path, e, contents)
|
146
176
|
end
|
147
177
|
end
|
178
|
+
PodUpdateConfig.set_prepare_time(Time.now - start_time)
|
148
179
|
end
|
149
180
|
|
150
181
|
# 注册 pod install 钩子
|
151
182
|
Pod::HooksManager.register('cocoapods-meitu-bin', :post_install) do |context|
|
152
|
-
|
183
|
+
#基于podfile的checksum上报云端podfile.lock文件
|
153
184
|
upload_podfile_lock(Pod::Config.instance.podfile.checksum)
|
154
185
|
#判断是否在 mbox 工作目录执行pod install
|
155
186
|
if system("mbox status > /dev/null 2>&1")
|
156
187
|
upload_mbox_podfile_lock
|
157
188
|
end
|
189
|
+
#基于 develop 分支,上报podfile.lock文件
|
190
|
+
upload_develop_podfile_lock
|
158
191
|
end
|
159
192
|
|
160
193
|
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.1.
|
4
|
+
version: 1.1.5
|
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-09 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|