cocoapods-mtxx-bin 0.0.1 → 0.0.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-mtxx-bin/command/bin/buildAll.rb +310 -0
- data/lib/cocoapods-mtxx-bin/command/bin/code.rb +3 -1
- data/lib/cocoapods-mtxx-bin/command/bin/repo/push.rb +48 -75
- data/lib/cocoapods-mtxx-bin/command/bin.rb +1 -0
- data/lib/cocoapods-mtxx-bin/config/config.rb +0 -2
- data/lib/cocoapods-mtxx-bin/gem_version.rb +1 -1
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/bin_helper.rb +19 -0
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/builder.rb +381 -0
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/podspec_util.rb +137 -0
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/zip_file_helper.rb +81 -0
- data/lib/cocoapods-mtxx-bin/native/analyzer.rb +4 -0
- data/lib/cocoapods-mtxx-bin/native/resolver.rb +69 -10
- data/lib/cocoapods-mtxx-bin/native/sources_manager.rb +1 -0
- data/lib/cocoapods-mtxx-bin/source_provider_hook.rb +16 -4
- data/lib/cocoapods_plugin.rb +9 -0
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c18fc57de2d08c49e956f598907f2ff443b8fa45d678f3efe4d283f7b1e5d06a
|
4
|
+
data.tar.gz: 236bb2f1d892cc19704ca68c821e9953fd000f98e55bf54c6eb12de47af02fd6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0e563796e362c9c8980a9d7ac161dfc38667bd4feddbab330de53b58a69c89868098abf69a8d5fb164c02bd7afcd888f1a8df456a57ca95d8323deec2e56599
|
7
|
+
data.tar.gz: bd6017ec3927a02aae59bd02a78fa488e14bd4a481b1e4b20dced50b74ef7d71f96b1fcd4d97794dabc52a4f1347208e7b81ac59d30cc5e0b91f7e7e33fa89c7
|
@@ -0,0 +1,310 @@
|
|
1
|
+
require 'cocoapods-mtxx-bin/helpers/buildAll/builder'
|
2
|
+
require 'cocoapods-mtxx-bin/helpers/buildAll/podspec_util'
|
3
|
+
require 'cocoapods-mtxx-bin/helpers/buildAll/zip_file_helper'
|
4
|
+
require 'cocoapods-mtxx-bin/helpers/buildAll/bin_helper'
|
5
|
+
require 'yaml'
|
6
|
+
require 'digest'
|
7
|
+
|
8
|
+
module Pod
|
9
|
+
class Command
|
10
|
+
class Bin < Command
|
11
|
+
class BuildAll < Bin
|
12
|
+
include CBin::BuildAll
|
13
|
+
|
14
|
+
CDN = 'https://cdn.cocoapods.org/'.freeze
|
15
|
+
MASTER_HTTP = 'https://github.com/CocoaPods/Specs.git'.freeze
|
16
|
+
MASTER_SSH = 'git@github.com:CocoaPods/Specs.git'.freeze
|
17
|
+
MT_REPO = 'techgit.meitu.com'.freeze
|
18
|
+
|
19
|
+
self.summary = '根据壳工程打包所有依赖组件为静态库(static framework)'
|
20
|
+
self.description = <<-DESC
|
21
|
+
#{self.summary}
|
22
|
+
DESC
|
23
|
+
|
24
|
+
def self.options
|
25
|
+
[
|
26
|
+
%w[--clean 删除编译临时目录],
|
27
|
+
%w[--repo-update 更新Podfile中指定的repo仓库],
|
28
|
+
%w[--full-build 是否全量打包]
|
29
|
+
].concat(super).uniq
|
30
|
+
end
|
31
|
+
|
32
|
+
def initialize(argv)
|
33
|
+
@clean = argv.flag?('clean', false )
|
34
|
+
@repo_update = argv.flag?('repo-update', false )
|
35
|
+
@full_build = argv.flag?('full-build', false )
|
36
|
+
@base_dir = "#{Pathname.pwd}/build_pods"
|
37
|
+
super
|
38
|
+
end
|
39
|
+
|
40
|
+
def run
|
41
|
+
# 开始时间
|
42
|
+
@start_time = Time.now.to_i
|
43
|
+
# 读取配置文件
|
44
|
+
read_config
|
45
|
+
# 更新repo仓库
|
46
|
+
repo_update
|
47
|
+
# 执行pre_build命令
|
48
|
+
pre_build
|
49
|
+
# 分析依赖
|
50
|
+
@analyze_result = analyse
|
51
|
+
# 删除编译产物
|
52
|
+
clean_build_pods
|
53
|
+
# 编译所有pod_targets
|
54
|
+
results = build_pod_targets
|
55
|
+
# 执行post_build命令
|
56
|
+
post_build(results)
|
57
|
+
# 删除编译产物
|
58
|
+
clean_build_pods if @clean
|
59
|
+
# 计算耗时
|
60
|
+
show_cost_time
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
# 打印耗时
|
66
|
+
def show_cost_time
|
67
|
+
return if @start_time.nil?
|
68
|
+
UI.info "总耗时:#{Time.now.to_i - @start_time}s".green
|
69
|
+
end
|
70
|
+
|
71
|
+
# 读取配置文件
|
72
|
+
def read_config
|
73
|
+
UI.title "Read config from file `BinConfig.yaml`".green do
|
74
|
+
config_file = File.join(Dir.pwd, 'BinConfig.yaml')
|
75
|
+
return unless File.exist?(config_file)
|
76
|
+
config = YAML.load(File.open(config_file))
|
77
|
+
return if config.nil?
|
78
|
+
build_config = config['build_config']
|
79
|
+
return if build_config.nil?
|
80
|
+
@pre_build = build_config['pre_build']
|
81
|
+
@post_build = build_config['post_build']
|
82
|
+
@black_list = build_config['black_list']
|
83
|
+
@write_list = build_config['write_list']
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
# 更新repo仓库
|
88
|
+
def repo_update
|
89
|
+
UI.title "Repo update".green do
|
90
|
+
return if podfile.nil?
|
91
|
+
sources_manager = Pod::Config.instance.sources_manager
|
92
|
+
podfile.sources.uniq.map { |src|
|
93
|
+
# next if src.include?(CDN) || src.include?(MASTER_HTTP) || src.include?(MASTER_SSH)
|
94
|
+
next unless src.include?(MT_REPO)
|
95
|
+
UI.message "Update repo: #{src}"
|
96
|
+
source = sources_manager.source_with_name_or_url(src)
|
97
|
+
source.update(false )
|
98
|
+
}
|
99
|
+
end if @repo_update
|
100
|
+
end
|
101
|
+
|
102
|
+
# 执行pre build
|
103
|
+
def pre_build
|
104
|
+
UI.title "Execute the command of pre build".green do
|
105
|
+
system(@pre_build)
|
106
|
+
end if @pre_build
|
107
|
+
end
|
108
|
+
|
109
|
+
# 执行post build
|
110
|
+
def post_build(results)
|
111
|
+
UI.title "Execute the command of post build".green do
|
112
|
+
system(@post_build)
|
113
|
+
end if @post_build
|
114
|
+
end
|
115
|
+
|
116
|
+
# 获取 podfile
|
117
|
+
def podfile
|
118
|
+
@podfile ||= begin
|
119
|
+
podfile_path = File.join(Pathname.pwd,"Podfile")
|
120
|
+
raise "Podfile不存在" unless File.exist?(podfile_path)
|
121
|
+
sources_manager = Pod::Config.instance.sources_manager
|
122
|
+
podfile = Podfile.from_file(Pathname.new(podfile_path))
|
123
|
+
podfile_hash = podfile.to_hash
|
124
|
+
podfile_hash['sources'] = (podfile_hash['sources'] || []).concat(sources_manager.code_source_list.map(&:url))
|
125
|
+
podfile_hash['sources'] << sources_manager.binary_source.url
|
126
|
+
podfile_hash['sources'].uniq!
|
127
|
+
Podfile.from_hash(podfile_hash)
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
# 获取 podfile.lock
|
132
|
+
def lockfile
|
133
|
+
@lockfile ||= begin
|
134
|
+
lock_path = File.join(Pathname.pwd,"Podfile.lock")
|
135
|
+
raise "Podfile.lock不存在,请执行pod install" unless File.exist?(lock_path)
|
136
|
+
Lockfile.from_file(Pathname.new(lock_path))
|
137
|
+
end
|
138
|
+
end
|
139
|
+
|
140
|
+
# 获取 sandbox
|
141
|
+
def sandbox
|
142
|
+
@sandbox ||= begin
|
143
|
+
sandbox_path = File.join(Pathname.pwd, "Pods")
|
144
|
+
raise "Pods文件夹不存在,请执行pod install" unless File.exist?(sandbox_path)
|
145
|
+
Pod::Sandbox.new(sandbox_path)
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
# 根据podfile和podfile.lock分析依赖
|
150
|
+
def analyse
|
151
|
+
UI.title "Analyze dependencies".green do
|
152
|
+
analyzer = Pod::Installer::Analyzer.new(
|
153
|
+
sandbox,
|
154
|
+
podfile,
|
155
|
+
lockfile
|
156
|
+
)
|
157
|
+
analyzer.analyze(true )
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
# 删除编译产物
|
162
|
+
def clean_build_pods
|
163
|
+
UI.title "Clean build pods".green do
|
164
|
+
build_path = Dir.pwd + "/build"
|
165
|
+
FileUtils.rm_rf(build_path) if File.exist?(build_path)
|
166
|
+
build_pods_path = Dir.pwd + "/build_pods"
|
167
|
+
FileUtils.rm_rf(build_pods_path) if File.exist?(build_pods_path)
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
171
|
+
# 构建所有pod_targets
|
172
|
+
def build_pod_targets
|
173
|
+
UI.title "Build all pod targets(#{@full_build ? '全量打包' : '非全量打包'})".green do
|
174
|
+
pod_targets = @analyze_result.pod_targets.uniq
|
175
|
+
success_pods = []
|
176
|
+
fail_pods = []
|
177
|
+
local_pods = []
|
178
|
+
external_pods = []
|
179
|
+
binary_pods = []
|
180
|
+
created_pods = []
|
181
|
+
pod_targets.map do |pod_target|
|
182
|
+
begin
|
183
|
+
version = BinHelper.version(pod_target.pod_name, pod_target.root_spec.version.to_s, @analyze_result.specifications)
|
184
|
+
# 全量
|
185
|
+
if @full_build
|
186
|
+
# 黑名单
|
187
|
+
next if !@black_list.nil? && !@black_list.empty? && @black_list.include?(pod_target.pod_name)
|
188
|
+
else
|
189
|
+
# 白名单
|
190
|
+
next if !@write_list.nil? && !@write_list.empty? && !@write_list.include?(pod_target.pod_name)
|
191
|
+
end
|
192
|
+
# 本地库
|
193
|
+
if @sandbox.local?(pod_target.pod_name)
|
194
|
+
local_pods << pod_target.pod_name
|
195
|
+
show_skip_tip("#{pod_target.pod_name} 是本地库")
|
196
|
+
next
|
197
|
+
end
|
198
|
+
# 外部源(如 git)
|
199
|
+
if @sandbox.checkout_sources[pod_target.pod_name]
|
200
|
+
external_pods << pod_target.pod_name
|
201
|
+
show_skip_tip("#{pod_target.pod_name} 以external方式引入")
|
202
|
+
next
|
203
|
+
end
|
204
|
+
# 无源码
|
205
|
+
if !@sandbox.local?(pod_target.pod_name) && !pod_target.should_build?
|
206
|
+
binary_pods << pod_target.pod_name
|
207
|
+
show_skip_tip("#{pod_target.pod_name} 无需编译")
|
208
|
+
next
|
209
|
+
end
|
210
|
+
# 非全量编译、 不在白名单中且已经有相应的二进制版本
|
211
|
+
if has_created_binary?(pod_target.pod_name, version)
|
212
|
+
created_pods << pod_target.pod_name
|
213
|
+
show_skip_tip("#{pod_target.pod_name}(#{version}) 已经有二进制版本了")
|
214
|
+
next
|
215
|
+
end
|
216
|
+
# 是否跳过编译(黑名单)
|
217
|
+
next if skip_build?(pod_target)
|
218
|
+
# 构建产物
|
219
|
+
builder = Builder.new(pod_target, @sandbox.checkout_sources)
|
220
|
+
result = builder.build
|
221
|
+
fail_pods << pod_target.pod_name unless result
|
222
|
+
next unless result
|
223
|
+
builder.create_binary
|
224
|
+
# 压缩并上传zip
|
225
|
+
zip_helper = ZipFileHelper.new(pod_target, version, builder.product_dir, builder.build_as_framework)
|
226
|
+
result = zip_helper.zip_lib
|
227
|
+
fail_pods << pod_target.pod_name unless result
|
228
|
+
next unless result
|
229
|
+
result = zip_helper.upload_zip_lib
|
230
|
+
fail_pods << pod_target.pod_name unless result
|
231
|
+
next unless result
|
232
|
+
# 生成二进制podspec并上传
|
233
|
+
podspec_creator = PodspecUtil.new(pod_target, version, builder.build_as_framework)
|
234
|
+
bin_spec = podspec_creator.create_binary_podspec
|
235
|
+
bin_spec_file = podspec_creator.write_binary_podspec(bin_spec)
|
236
|
+
podspec_creator.push_binary_podspec(bin_spec_file)
|
237
|
+
success_pods << pod_target.pod_name
|
238
|
+
rescue Pod::StandardError => e
|
239
|
+
UI.info "#{pod_target} 编译失败,原因:#{e}".red
|
240
|
+
fail_pods << pod_target.pod_name
|
241
|
+
next
|
242
|
+
end
|
243
|
+
end
|
244
|
+
results = {
|
245
|
+
'Total' => pod_targets,
|
246
|
+
'Success' => success_pods,
|
247
|
+
'Fail' => fail_pods,
|
248
|
+
'Local' => local_pods,
|
249
|
+
'External' => external_pods,
|
250
|
+
'No Source File' => binary_pods,
|
251
|
+
'Created Binary' => created_pods,
|
252
|
+
'Black List' => @black_list || [],
|
253
|
+
'Write List' => @write_list || []
|
254
|
+
}
|
255
|
+
show_results(results)
|
256
|
+
results
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
def show_skip_tip(title)
|
261
|
+
UI.info title.yellow
|
262
|
+
end
|
263
|
+
|
264
|
+
# 是否跳过编译
|
265
|
+
def skip_build?(pod_target)
|
266
|
+
!@black_list.nil? && !@black_list.empty? && @black_list.include?(pod_target.pod_name)
|
267
|
+
end
|
268
|
+
|
269
|
+
# 展示结果
|
270
|
+
def show_results(results)
|
271
|
+
UI.title "打包结果:".green do
|
272
|
+
UI.info "——————————————————————————————————".green
|
273
|
+
UI.info "|#{"Type".center(20)}|#{"Count".center(11)}|".green
|
274
|
+
UI.info "——————————————————————————————————".green
|
275
|
+
results.each do |key, value|
|
276
|
+
UI.info "|#{key.center(20)}|#{value.size.to_s.center(11)}|".green
|
277
|
+
end
|
278
|
+
UI.info "——————————————————————————————————".green
|
279
|
+
|
280
|
+
# 打印出失败的 target
|
281
|
+
unless results['Fail'].empty?
|
282
|
+
UI.info "\n打包失败的库:#{results['Fail']}".red
|
283
|
+
end
|
284
|
+
end
|
285
|
+
end
|
286
|
+
|
287
|
+
# 是否已经有二进制版本了
|
288
|
+
def has_created_binary?(pod_name, version)
|
289
|
+
# name 或 version 为nil
|
290
|
+
return false if pod_name.nil? || version.nil?
|
291
|
+
# 是否全量打包
|
292
|
+
return false if @full_build
|
293
|
+
# 是否在白名单中
|
294
|
+
return false if !@write_list.nil? && !@write_list.empty? && @write_list.include?(pod_name)
|
295
|
+
sources_manager = Config.instance.sources_manager
|
296
|
+
binary_source = sources_manager.binary_source
|
297
|
+
result = false
|
298
|
+
begin
|
299
|
+
specification = binary_source.specification(pod_name, version)
|
300
|
+
result = true unless specification.nil?
|
301
|
+
rescue Pod::StandardError => e
|
302
|
+
result = false
|
303
|
+
end
|
304
|
+
result
|
305
|
+
end
|
306
|
+
|
307
|
+
end
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
@@ -84,6 +84,8 @@ module Pod
|
|
84
84
|
|
85
85
|
find_dependency = find_dependency(name)
|
86
86
|
|
87
|
+
raise "未找到 #{name} 的依赖" if find_dependency.nil?
|
88
|
+
|
87
89
|
spec = fetch_external_source(find_dependency, @config.podfile,@config.lockfile, @config.sandbox,true )
|
88
90
|
|
89
91
|
download_request = Pod::Downloader::Request.new(:name => name, :spec => spec)
|
@@ -163,7 +165,7 @@ module Pod
|
|
163
165
|
lib_path = File.join(dir,lib_name)
|
164
166
|
|
165
167
|
unless File.exist?(lib_path)
|
166
|
-
lib_path = File.join(dir.children.first,
|
168
|
+
lib_path = File.join(dir.children.first, name)
|
167
169
|
end
|
168
170
|
|
169
171
|
lib_path
|
@@ -9,105 +9,78 @@ module Pod
|
|
9
9
|
class Push < Repo
|
10
10
|
self.summary = '发布组件'
|
11
11
|
self.description = <<-DESC
|
12
|
-
|
12
|
+
#{self.summary}
|
13
|
+
跳过lint过程
|
13
14
|
DESC
|
14
15
|
|
15
16
|
self.arguments = [
|
17
|
+
CLAide::Argument.new('REPO', true ),
|
16
18
|
CLAide::Argument.new('NAME.podspec', false )
|
17
19
|
]
|
18
20
|
|
19
21
|
def self.options
|
20
|
-
[
|
21
|
-
['--binary', '发布组件的二进制版本'],
|
22
|
-
['--template-podspec=A.binary-template.podspec', '生成拥有 subspec 的二进制 spec 需要的模版 podspec, 插件会更改 version 和 source'],
|
23
|
-
['--reserve-created-spec', '保留生成的二进制 spec 文件'],
|
24
|
-
['--code-dependencies', '使用源码依赖进行 lint'],
|
25
|
-
['--loose-options', '添加宽松的 options, 包括 --use-libraries (可能会造成 entry point (start) undefined)'],
|
26
|
-
['--allow-prerelease', '允许使用 prerelease 的版本 lint']
|
27
|
-
].concat(Pod::Command::Repo::Push.options).concat(super).uniq
|
22
|
+
[].concat(Pod::Command::Repo::Push.options).concat(super).uniq
|
28
23
|
end
|
29
24
|
|
30
25
|
def initialize(argv)
|
26
|
+
@repo = argv.shift_argument
|
31
27
|
@podspec = argv.shift_argument
|
32
|
-
@binary = argv.flag?('binary')
|
33
|
-
@loose_options = argv.flag?('loose-options')
|
34
|
-
@code_dependencies = argv.flag?('code-dependencies')
|
35
|
-
@sources = argv.option('sources') || []
|
36
|
-
@reserve_created_spec = argv.flag?('reserve-created-spec')
|
37
|
-
@template_podspec = argv.option('template-podspec')
|
38
|
-
@allow_prerelease = argv.flag?('allow-prerelease')
|
39
28
|
super
|
40
29
|
|
41
30
|
@additional_args = argv.remainder!
|
42
31
|
end
|
43
32
|
|
44
33
|
def run
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
repo,
|
50
|
-
"--sources=#{sources_option(@code_dependencies, @sources)}",
|
51
|
-
*@additional_args
|
52
|
-
]
|
34
|
+
argvs = [
|
35
|
+
@repo,
|
36
|
+
*@additional_args
|
37
|
+
]
|
53
38
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
argvs += ['--allow-warnings', '--use-json']
|
58
|
-
# if code_spec&.all_dependencies&.any?
|
59
|
-
# argvs << '--use-libraries'
|
60
|
-
# end
|
61
|
-
end
|
62
|
-
|
63
|
-
push = Pod::Command::Repo::Push.new(CLAide::ARGV.new(argvs))
|
64
|
-
push.validate!
|
65
|
-
push.run
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
39
|
+
push = Pod::Command::Repo::Push.new(CLAide::ARGV.new(argvs))
|
40
|
+
push.validate!
|
41
|
+
push.run
|
69
42
|
ensure
|
70
43
|
clear_binary_spec_file_if_needed unless @reserve_created_spec
|
71
44
|
end
|
72
45
|
|
73
46
|
private
|
74
47
|
|
75
|
-
def template_spec_file
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
def spec_file
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
end
|
107
|
-
|
108
|
-
def repo
|
109
|
-
|
110
|
-
end
|
48
|
+
# def template_spec_file
|
49
|
+
# @template_spec_file ||= begin
|
50
|
+
# if @template_podspec
|
51
|
+
# find_spec_file(@template_podspec)
|
52
|
+
# else
|
53
|
+
# binary_template_spec_file
|
54
|
+
# end
|
55
|
+
# end
|
56
|
+
# end
|
57
|
+
#
|
58
|
+
# def spec_file
|
59
|
+
# @spec_file ||= begin
|
60
|
+
# if @podspec
|
61
|
+
# find_spec_file(@podspec)
|
62
|
+
# else
|
63
|
+
# if code_spec_files.empty?
|
64
|
+
# raise Informative, '当前目录下没有找到可用源码 podspec.'
|
65
|
+
# end
|
66
|
+
#
|
67
|
+
# spec_file = if @binary
|
68
|
+
# code_spec = Pod::Specification.from_file(code_spec_files.first)
|
69
|
+
# if template_spec_file
|
70
|
+
# template_spec = Pod::Specification.from_file(template_spec_file)
|
71
|
+
# end
|
72
|
+
# create_binary_spec_file(code_spec, template_spec)
|
73
|
+
# else
|
74
|
+
# code_spec_files.first
|
75
|
+
# end
|
76
|
+
# spec_file
|
77
|
+
# end
|
78
|
+
# end
|
79
|
+
# end
|
80
|
+
#
|
81
|
+
# def repo
|
82
|
+
# @binary ? binary_source.name : code_source_list.first.name
|
83
|
+
# end
|
111
84
|
end
|
112
85
|
end
|
113
86
|
end
|
@@ -8,6 +8,7 @@ require 'cocoapods-mtxx-bin/command/bin/install'
|
|
8
8
|
# require 'cocoapods-mtxx-bin/command/bin/imy'
|
9
9
|
require 'cocoapods-mtxx-bin/command/bin/repo'
|
10
10
|
require 'cocoapods-mtxx-bin/command/bin/spec'
|
11
|
+
require 'cocoapods-mtxx-bin/command/bin/buildAll'
|
11
12
|
require 'cocoapods-mtxx-bin/helpers'
|
12
13
|
# require 'cocoapods-mtxx-bin/native'
|
13
14
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'digest'
|
2
|
+
|
3
|
+
module CBin
|
4
|
+
module BuildAll
|
5
|
+
class BinHelper
|
6
|
+
include Pod
|
7
|
+
|
8
|
+
# 二进制版本号(x.y.z.bin[md5前6位])
|
9
|
+
def self.version(pod_name, original_version, specifications)
|
10
|
+
specs = specifications.map(&:name).select { |spec|
|
11
|
+
spec.include?(pod_name) && !spec.include?('/Binary')
|
12
|
+
}.sort!
|
13
|
+
specs_str = specs.join('')
|
14
|
+
"#{original_version}.bin#{Digest::MD5.hexdigest(specs_str)[0,6]}"
|
15
|
+
end
|
16
|
+
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|