cocoapods-mtxx-bin 0.0.13 → 1.0.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-mtxx-bin/command/bin/buildAll.rb +45 -23
- data/lib/cocoapods-mtxx-bin/command/bin/init.rb +14 -36
- data/lib/cocoapods-mtxx-bin/command/bin/lock/dependency.rb +82 -0
- data/lib/cocoapods-mtxx-bin/command/bin/lock/spec_repo.rb +105 -0
- data/lib/cocoapods-mtxx-bin/command/bin/lock/version.rb +41 -0
- data/lib/cocoapods-mtxx-bin/command/bin/lock.rb +36 -0
- data/lib/cocoapods-mtxx-bin/command/bin/outputSource.rb +18 -11
- data/lib/cocoapods-mtxx-bin/command/bin/upload.rb +2 -2
- data/lib/cocoapods-mtxx-bin/command/bin.rb +11 -12
- data/lib/cocoapods-mtxx-bin/config/config.rb +24 -49
- data/lib/cocoapods-mtxx-bin/config/config_asker.rb +1 -4
- data/lib/cocoapods-mtxx-bin/gem_version.rb +1 -1
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/bin_helper.rb +11 -0
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/builder.rb +44 -39
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/podspec_util.rb +11 -8
- data/lib/cocoapods-mtxx-bin/helpers/buildAll/zip_file_helper.rb +17 -13
- data/lib/cocoapods-mtxx-bin/helpers/pod_size_helper.rb +30 -12
- data/lib/cocoapods-mtxx-bin/native/installer.rb +8 -7
- data/lib/cocoapods-mtxx-bin/native/podfile.rb +8 -0
- data/lib/cocoapods-mtxx-bin/native/podfile_env.rb +1 -0
- data/lib/cocoapods-mtxx-bin/native/resolver.rb +31 -32
- data/lib/cocoapods-mtxx-bin/native/sources_manager.rb +2 -1
- data/lib/cocoapods-mtxx-bin/source_provider_hook.rb +4 -2
- metadata +6 -6
- data/lib/cocoapods-mtxx-bin/command/bin/imy.rb +0 -45
- data/lib/cocoapods-mtxx-bin/command/bin/initHotKey.rb +0 -70
- data/lib/cocoapods-mtxx-bin/config/config_hot_key.rb +0 -103
- data/lib/cocoapods-mtxx-bin/config/config_hot_key_asker.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 41f8002bb6e1aebd88af984e688177d9ac4821eb2c1d006da248c2f269712b70
|
4
|
+
data.tar.gz: aeaf21d40990fe819241aed0115990d258b624331767f30e0a8bb9d437896b3e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 947e653552621d2fd5d2798f672ab145d30b79f9f007fa0aea0c97137d8cc9018e1f03708b0c4685e844f298d8a48615fe521b8bf05dd2a4b9a490426b0ee230
|
7
|
+
data.tar.gz: 1c971b939a41dfe772bf233d9118ef83bf46672cd5421ba59a3211f4012c103cb17b7141888444b031397ff4a35f65ed7f9c4ae1e68501509054571a7cdb4d0c
|
@@ -24,22 +24,31 @@ module Pod
|
|
24
24
|
|
25
25
|
def self.options
|
26
26
|
[
|
27
|
-
%w[--clean
|
27
|
+
%w[--clean 全部二进制包制作完成后删除编译临时目录],
|
28
|
+
%w[--clean-single 每制作完一个二进制包就删除该编译临时目录],
|
28
29
|
%w[--repo-update 更新Podfile中指定的repo仓库],
|
29
|
-
%w[--full-build 是否全量打包]
|
30
|
+
%w[--full-build 是否全量打包],
|
31
|
+
%w[--skip-simulator 跳过模拟器编译],
|
32
|
+
%w[--configuration=configName 在构建每个目标时使用configName指定构建配置,如:'Debug'、'Release'等]
|
30
33
|
].concat(super).uniq
|
31
34
|
end
|
32
35
|
|
33
36
|
def initialize(argv)
|
34
37
|
@clean = argv.flag?('clean', false)
|
38
|
+
@clean_single = argv.flag?('clean-single', false)
|
35
39
|
@repo_update = argv.flag?('repo-update', false)
|
36
40
|
@full_build = argv.flag?('full-build', false)
|
41
|
+
@skip_simulator = argv.flag?('skip-simulator', false)
|
42
|
+
@configuration = argv.option('configuration', 'Debug')
|
37
43
|
@base_dir = "#{Pathname.pwd}/build_pods"
|
38
44
|
@version_helper = BinHelper.new
|
39
45
|
super
|
40
46
|
end
|
41
47
|
|
42
48
|
def run
|
49
|
+
CBin.config.config_file_exist?
|
50
|
+
# 打印提示
|
51
|
+
print_tip
|
43
52
|
# 开始时间
|
44
53
|
@start_time = Time.now.to_i
|
45
54
|
# 读取配置文件
|
@@ -64,6 +73,14 @@ module Pod
|
|
64
73
|
|
65
74
|
private
|
66
75
|
|
76
|
+
def print_tip
|
77
|
+
UI.info '——————————————————————————————————'.blue
|
78
|
+
UI.info "|#{' '.center(32)}|".blue
|
79
|
+
UI.info "|#{"Configuration:`#{@configuration}`".center(32)}|".blue
|
80
|
+
UI.info "|#{' '.center(32)}|".blue
|
81
|
+
UI.info '——————————————————————————————————'.blue
|
82
|
+
end
|
83
|
+
|
67
84
|
# 打印耗时
|
68
85
|
def show_cost_time
|
69
86
|
return if @start_time.nil?
|
@@ -73,7 +90,7 @@ module Pod
|
|
73
90
|
# 读取配置文件
|
74
91
|
def read_config
|
75
92
|
UI.title 'Read config from file `BinConfig.yaml`'.green do
|
76
|
-
config_file = File.join(
|
93
|
+
config_file = File.join(Pod::Config.instance.project_root, 'BinConfig.yaml')
|
77
94
|
return unless File.exist?(config_file)
|
78
95
|
config = YAML.safe_load(File.open(config_file))
|
79
96
|
return if config.nil?
|
@@ -125,7 +142,7 @@ module Pod
|
|
125
142
|
def podfile
|
126
143
|
@podfile ||= begin
|
127
144
|
podfile_path = File.join(Pathname.pwd, 'Podfile')
|
128
|
-
raise 'Podfile不存在' unless File.exist?(podfile_path)
|
145
|
+
raise Informative, 'Podfile不存在' unless File.exist?(podfile_path)
|
129
146
|
sources_manager = Pod::Config.instance.sources_manager
|
130
147
|
podfile = Podfile.from_file(Pathname.new(podfile_path))
|
131
148
|
podfile_hash = podfile.to_hash
|
@@ -140,7 +157,7 @@ module Pod
|
|
140
157
|
def lockfile
|
141
158
|
@lockfile ||= begin
|
142
159
|
lock_path = File.join(Pathname.pwd, 'Podfile.lock')
|
143
|
-
raise 'Podfile.lock不存在,请执行pod install' unless File.exist?(lock_path)
|
160
|
+
raise Informative, 'Podfile.lock不存在,请执行pod install' unless File.exist?(lock_path)
|
144
161
|
Lockfile.from_file(Pathname.new(lock_path))
|
145
162
|
end
|
146
163
|
end
|
@@ -149,7 +166,7 @@ module Pod
|
|
149
166
|
def sandbox
|
150
167
|
@sandbox ||= begin
|
151
168
|
sandbox_path = File.join(Pathname.pwd, 'Pods')
|
152
|
-
raise 'Pods文件夹不存在,请执行pod install' unless File.exist?(sandbox_path)
|
169
|
+
raise Informative, 'Pods文件夹不存在,请执行pod install' unless File.exist?(sandbox_path)
|
153
170
|
Pod::Sandbox.new(sandbox_path)
|
154
171
|
end
|
155
172
|
end
|
@@ -166,6 +183,14 @@ module Pod
|
|
166
183
|
end
|
167
184
|
end
|
168
185
|
|
186
|
+
# 删除单个Pod的编译中间产物
|
187
|
+
def clean_single_build_pod(pod_target)
|
188
|
+
UI.title "Clean build pod: `#{pod_target}`".green do
|
189
|
+
build_pod_path = File.join(Dir.pwd, 'build_pods', "#{pod_target}")
|
190
|
+
FileUtils.rm_rf(build_pod_path) if File.exist?(build_pod_path)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
169
194
|
# 删除编译产物
|
170
195
|
def clean_build_pods
|
171
196
|
UI.title 'Clean build pods'.green do
|
@@ -189,14 +214,10 @@ module Pod
|
|
189
214
|
pod_targets.map do |pod_target|
|
190
215
|
begin
|
191
216
|
version = @version_helper.version(pod_target.pod_name, pod_target.root_spec.version.to_s, @analyze_result.specifications)
|
192
|
-
#
|
193
|
-
if
|
194
|
-
|
195
|
-
|
196
|
-
else
|
197
|
-
# 白名单
|
198
|
-
next if !@write_list.nil? && !@write_list.empty? && !@write_list.include?(pod_target.pod_name)
|
199
|
-
end
|
217
|
+
# 黑名单(不分全量和非全量)
|
218
|
+
next if skip_build?(pod_target)
|
219
|
+
# 白名单(有白名单,只看白名单,不分全量和非全量)
|
220
|
+
next if !@write_list.nil? && !@write_list.empty? && !@write_list.include?(pod_target.pod_name)
|
200
221
|
# 本地库
|
201
222
|
if @sandbox.local?(pod_target.pod_name)
|
202
223
|
local_pods << pod_target.pod_name
|
@@ -215,22 +236,20 @@ module Pod
|
|
215
236
|
show_skip_tip("#{pod_target.pod_name} 无需编译")
|
216
237
|
next
|
217
238
|
end
|
218
|
-
#
|
239
|
+
# 非全量编译、不在白名单中且已经有相应的二进制版本
|
219
240
|
if has_created_binary?(pod_target.pod_name, version)
|
220
241
|
created_pods << pod_target.pod_name
|
221
242
|
show_skip_tip("#{pod_target.pod_name}(#{version}) 已经有二进制版本了")
|
222
243
|
next
|
223
244
|
end
|
224
|
-
# 是否跳过编译(黑名单)
|
225
|
-
next if skip_build?(pod_target)
|
226
245
|
# 构建产物
|
227
|
-
builder = Builder.new(pod_target, @sandbox.checkout_sources)
|
246
|
+
builder = Builder.new(pod_target, @sandbox.checkout_sources, @skip_simulator, @configuration)
|
228
247
|
result = builder.build
|
229
248
|
fail_pods << pod_target.pod_name unless result
|
230
249
|
next unless result
|
231
250
|
builder.create_binary
|
232
251
|
# 压缩并上传zip
|
233
|
-
zip_helper = ZipFileHelper.new(pod_target, version, builder.product_dir, builder.build_as_framework)
|
252
|
+
zip_helper = ZipFileHelper.new(pod_target, version, builder.product_dir, builder.build_as_framework?, @configuration)
|
234
253
|
result = zip_helper.zip_lib
|
235
254
|
fail_pods << pod_target.pod_name unless result
|
236
255
|
next unless result
|
@@ -238,15 +257,18 @@ module Pod
|
|
238
257
|
fail_pods << pod_target.pod_name unless result
|
239
258
|
next unless result
|
240
259
|
# 生成二进制podspec并上传
|
241
|
-
podspec_creator = PodspecUtil.new(pod_target, version, builder.build_as_framework)
|
260
|
+
podspec_creator = PodspecUtil.new(pod_target, version, builder.build_as_framework?, @configuration)
|
242
261
|
bin_spec = podspec_creator.create_binary_podspec
|
243
262
|
bin_spec_file = podspec_creator.write_binary_podspec(bin_spec)
|
244
|
-
podspec_creator.push_binary_podspec(bin_spec_file)
|
245
|
-
|
263
|
+
result = podspec_creator.push_binary_podspec(bin_spec_file)
|
264
|
+
fail_pods << pod_target.pod_name unless result
|
265
|
+
success_pods << pod_target.pod_name if result
|
246
266
|
rescue Pod::StandardError => e
|
247
|
-
UI.info "
|
267
|
+
UI.info "`#{pod_target}`编译失败,原因:#{e}".red
|
248
268
|
fail_pods << pod_target.pod_name
|
249
269
|
next
|
270
|
+
ensure
|
271
|
+
clean_single_build_pod(pod_target) if @clean_single
|
250
272
|
end
|
251
273
|
end
|
252
274
|
results = {
|
@@ -4,56 +4,53 @@ module Pod
|
|
4
4
|
class Command
|
5
5
|
class Bin < Command
|
6
6
|
class Init < Bin
|
7
|
-
self.summary = '
|
7
|
+
self.summary = '配置插件'
|
8
8
|
self.description = <<-DESC
|
9
|
-
创建yml
|
9
|
+
创建yml配置文件,保存插件需要的配置信息,如二进制podspec仓库、二进制下载地址等
|
10
10
|
DESC
|
11
11
|
|
12
12
|
def self.options
|
13
13
|
[
|
14
|
-
%w[--bin-url=URL 配置文件地址,直接从此地址下载配置文件]
|
15
|
-
['--update-sources', '更新源码私有源配置 bin_dev.yml 中的 code_repo_url_list 配置,支持多私有源,多个私有源用分号区分 example:git@techgit.meitu.com:iMeituPic/mtsourcespecs.git;git@techgit.meitu.com:iosmodules/specs.git;https://github.com/CocoaPods/Specs.git']
|
14
|
+
%w[--bin-url=URL 配置文件地址,直接从此地址下载配置文件]
|
16
15
|
].concat(super)
|
17
16
|
end
|
18
17
|
|
19
18
|
def initialize(argv)
|
20
19
|
@bin_url = argv.option('bin-url')
|
21
|
-
@update_sources = argv.flag?('update-sources')
|
22
20
|
super
|
23
21
|
end
|
24
22
|
|
25
23
|
def run
|
26
|
-
|
27
|
-
|
24
|
+
raise Informative, "当前目录下没有`Podfile`文件" unless File.exist?(File.join(Dir.pwd, "Podfile"))
|
25
|
+
raise Informative, "当前目录下已经存在配置文件" if File.exist?(CBin.config.config_file)
|
26
|
+
if @bin_url.nil?
|
27
|
+
config_with_asker
|
28
28
|
else
|
29
|
-
|
30
|
-
config_with_asker
|
31
|
-
else
|
32
|
-
config_with_url(@bin_url)
|
33
|
-
end
|
29
|
+
config_with_url(@bin_url)
|
34
30
|
end
|
35
|
-
|
36
31
|
end
|
37
32
|
|
38
33
|
private
|
39
34
|
|
35
|
+
# 从远端下载配置文件
|
40
36
|
def config_with_url(url)
|
41
37
|
require 'open-uri'
|
42
38
|
|
43
|
-
UI.puts "
|
39
|
+
UI.puts "开始下载配置文件..."
|
44
40
|
file = open(url)
|
45
41
|
contents = YAML.safe_load(file.read)
|
46
42
|
|
47
|
-
UI.puts "
|
43
|
+
UI.puts "开始同步配置文件..."
|
48
44
|
CBin.config.sync_config(contents.to_hash)
|
49
|
-
UI.puts "
|
45
|
+
UI.puts "设置完成.".green
|
50
46
|
rescue Errno::ENOENT => e
|
51
47
|
raise Informative, "配置文件路径 #{url} 无效,请确认后重试."
|
52
48
|
end
|
53
49
|
|
50
|
+
# 询问用户相关的配置
|
54
51
|
def config_with_asker
|
55
52
|
asker = CBin::Config::Asker.new
|
56
|
-
asker.
|
53
|
+
asker.welcome_message
|
57
54
|
|
58
55
|
config = {}
|
59
56
|
template_hash = CBin.config.template_hash
|
@@ -69,25 +66,6 @@ module Pod
|
|
69
66
|
CBin.config.sync_config(config)
|
70
67
|
asker.done_message
|
71
68
|
end
|
72
|
-
def update_code_repo_url_list
|
73
|
-
asker = CBin::Config::Asker.new
|
74
|
-
config = {}
|
75
|
-
template_hash = CBin.config.template_hash
|
76
|
-
template_hash.each do |k, v|
|
77
|
-
if k == "code_repo_url_list"
|
78
|
-
default = begin
|
79
|
-
CBin.config.send(k)
|
80
|
-
rescue StandardError
|
81
|
-
nil
|
82
|
-
end
|
83
|
-
config[k] = asker.ask_with_answer(v[:description], default, v[:selection])
|
84
|
-
else
|
85
|
-
config[k] = CBin.config.config_old[k]
|
86
|
-
end
|
87
|
-
end
|
88
|
-
CBin.config.sync_config_code_repo_url_list(config)
|
89
|
-
asker.done_message_update
|
90
|
-
end
|
91
69
|
end
|
92
70
|
end
|
93
71
|
end
|
@@ -0,0 +1,82 @@
|
|
1
|
+
|
2
|
+
module Pod
|
3
|
+
class Command
|
4
|
+
class Bin < Command
|
5
|
+
class Lock < Bin
|
6
|
+
class Dependency < Lock
|
7
|
+
include Pod
|
8
|
+
|
9
|
+
self.summary = '分析`POD_NAME`依赖的库'
|
10
|
+
self.description = <<-DESC
|
11
|
+
#{self.summary},如果加上`--reverse`,则分析依赖`POD_NAME`的库
|
12
|
+
DESC
|
13
|
+
|
14
|
+
self.arguments = [
|
15
|
+
CLAide::Argument.new('POD_NAME', true)
|
16
|
+
]
|
17
|
+
|
18
|
+
def self.options
|
19
|
+
[
|
20
|
+
%w[--reverse 分析依赖`POD_NAME`的库]
|
21
|
+
].concat(super).uniq
|
22
|
+
end
|
23
|
+
|
24
|
+
def initialize(argv)
|
25
|
+
super
|
26
|
+
@pod_name = argv.shift_argument
|
27
|
+
@reverse = argv.flag?('reverse', false)
|
28
|
+
end
|
29
|
+
|
30
|
+
def run
|
31
|
+
super
|
32
|
+
raise Informative, "请输入Pod库名称,如:AFNetworking" if @pod_name.nil?
|
33
|
+
if @reverse
|
34
|
+
reverse_dependencies
|
35
|
+
else
|
36
|
+
dependencies
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def dependencies
|
41
|
+
deps = []
|
42
|
+
@analyze_result.specifications.map do |spec|
|
43
|
+
if spec.name == @pod_name
|
44
|
+
deps.concat(spec.all_dependencies)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
deps.uniq!
|
48
|
+
UI.puts "\n"
|
49
|
+
if deps.empty?
|
50
|
+
UI.puts "`#{@pod_name}`无依赖的库".red
|
51
|
+
else
|
52
|
+
UI.puts "`#{@pod_name}`依赖的库如下:".yellow
|
53
|
+
deps.map { |dep| UI.puts "- #{dep}" }
|
54
|
+
UI.puts "total #{deps.size} deps".green
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def reverse_dependencies
|
59
|
+
pods = []
|
60
|
+
@analyze_result.specifications.map do |spec|
|
61
|
+
spec.all_dependencies.map do |dep|
|
62
|
+
if dep.name == @pod_name
|
63
|
+
pods << spec
|
64
|
+
break
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
68
|
+
pods.uniq!
|
69
|
+
UI.puts "\n"
|
70
|
+
if pods.empty?
|
71
|
+
UI.puts "没有依赖`#{@pod_name}`的库".red
|
72
|
+
else
|
73
|
+
UI.puts "依赖`#{@pod_name}`的库如下:".yellow
|
74
|
+
pods.map { |dep| UI.puts "- #{dep}" }
|
75
|
+
UI.puts "total #{pods.size} pods".green
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
81
|
+
end
|
82
|
+
end
|
@@ -0,0 +1,105 @@
|
|
1
|
+
|
2
|
+
module Pod
|
3
|
+
class Command
|
4
|
+
class Bin < Command
|
5
|
+
class Lock < Bin
|
6
|
+
class SpecRepo < Lock
|
7
|
+
include Pod
|
8
|
+
|
9
|
+
self.summary = '分析`podspec`源'
|
10
|
+
self.description = <<-DESC
|
11
|
+
#{self.summary},如果加`POD_NAME`,则分析该`POD_NAME`所属的repo仓库;如果不加,则打印项目中用到的repo仓库及每个仓库下Pod个数
|
12
|
+
DESC
|
13
|
+
|
14
|
+
self.arguments = [
|
15
|
+
CLAide::Argument.new('POD_NAME', false)
|
16
|
+
]
|
17
|
+
|
18
|
+
def initialize(argv)
|
19
|
+
super
|
20
|
+
@pod_name = argv.shift_argument
|
21
|
+
end
|
22
|
+
|
23
|
+
def run
|
24
|
+
super
|
25
|
+
if @pod_name.nil?
|
26
|
+
spec_repo_summary
|
27
|
+
else
|
28
|
+
pod_source
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
private
|
33
|
+
|
34
|
+
def spec_repos
|
35
|
+
raise Informative, "依赖分析失败" if @analyze_result.nil?
|
36
|
+
result = Hash.new
|
37
|
+
@analyze_result.specs_by_source.map do |source, specs|
|
38
|
+
next unless source
|
39
|
+
next if specs.empty?
|
40
|
+
key = source.url || source.name
|
41
|
+
|
42
|
+
# save `trunk` as 'trunk' so that the URL itself can be changed without lockfile churn
|
43
|
+
key = Pod::TrunkSource::TRUNK_REPO_NAME if source.name == Pod::TrunkSource::TRUNK_REPO_NAME
|
44
|
+
|
45
|
+
value = specs.map { |s| s.root.name }.uniq
|
46
|
+
# 合并重复的source源,而不是替换
|
47
|
+
if result[key].nil?
|
48
|
+
result[key] = YAMLHelper.sorted_array(value)
|
49
|
+
else
|
50
|
+
result[key] = YAMLHelper.sorted_array(result[key].concat(value))
|
51
|
+
end
|
52
|
+
end
|
53
|
+
result.compact
|
54
|
+
end
|
55
|
+
|
56
|
+
def external_sources
|
57
|
+
deps = config.podfile.dependencies.select(&:external?)
|
58
|
+
deps = deps.sort { |d, other| d.name <=> other.name }
|
59
|
+
sources = {}
|
60
|
+
deps.each { |d| sources[d.root_name] = d.external_source }
|
61
|
+
sources
|
62
|
+
end
|
63
|
+
|
64
|
+
# 打印所有source及其pods个数
|
65
|
+
def spec_repo_summary
|
66
|
+
pod_count = 0
|
67
|
+
UI.puts "\n"
|
68
|
+
spec_repos.map do |source, specs|
|
69
|
+
pod_count += specs.size
|
70
|
+
UI.puts "#{source}".yellow
|
71
|
+
UI.puts "- #{specs.size} pods"
|
72
|
+
end
|
73
|
+
pod_count += external_sources.keys.size
|
74
|
+
UI.puts "External".yellow
|
75
|
+
UI.puts "- #{external_sources.keys.size} pods"
|
76
|
+
|
77
|
+
UI.puts "\n"
|
78
|
+
UI.puts "total #{spec_repos.size + 1} sources, #{pod_count} pods".green
|
79
|
+
end
|
80
|
+
|
81
|
+
# 打印pod所属的source
|
82
|
+
def pod_source
|
83
|
+
sources = []
|
84
|
+
external = false
|
85
|
+
spec_repos.map do |source, specs|
|
86
|
+
if specs.include?(@pod_name)
|
87
|
+
sources << source
|
88
|
+
end
|
89
|
+
end
|
90
|
+
external_sources.map do |pod, ext_source|
|
91
|
+
if pod == @pod_name
|
92
|
+
external = true
|
93
|
+
sources << ext_source
|
94
|
+
end
|
95
|
+
end
|
96
|
+
UI.puts "\n"
|
97
|
+
raise Informative, "未找到`#{@pod_name}`所属的source,请检查`#{@pod_name}`是否拼写错误" if sources.empty?
|
98
|
+
UI.puts "#{@pod_name}#{external ? ' (External Source)' : ''}".yellow
|
99
|
+
sources.map { |source| UI.puts "- #{source}" }
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
|
2
|
+
module Pod
|
3
|
+
class Command
|
4
|
+
class Bin < Command
|
5
|
+
class Lock < Bin
|
6
|
+
class Version < Lock
|
7
|
+
include Pod
|
8
|
+
|
9
|
+
self.summary = '分析项目中使用的`Pod`库版本'
|
10
|
+
|
11
|
+
self.arguments = [
|
12
|
+
CLAide::Argument.new('POD_NAME', true)
|
13
|
+
]
|
14
|
+
|
15
|
+
def initialize(argv)
|
16
|
+
super
|
17
|
+
@pod_name = argv.shift_argument
|
18
|
+
end
|
19
|
+
|
20
|
+
def run
|
21
|
+
super
|
22
|
+
raise Informative, "请输入Pod库名称,如:AFNetworking" if @pod_name.nil?
|
23
|
+
versions = []
|
24
|
+
@analyze_result.specifications.map do |spec|
|
25
|
+
if spec.name == @pod_name
|
26
|
+
versions << spec.version
|
27
|
+
end
|
28
|
+
end
|
29
|
+
versions = versions.uniq
|
30
|
+
UI.puts "\n"
|
31
|
+
raise Informative, "未查找到`#{@pod_name}`的版本号,请检查`#{@pod_name}`是否拼写错误" if versions.empty?
|
32
|
+
UI.puts "`#{@pod_name}`版本如下:".yellow
|
33
|
+
versions.map { |v| UI.puts "- #{v}" }
|
34
|
+
|
35
|
+
UI.puts "[!] `#{@pod_name}`有`#{versions.size}`个版本,可能会导致意想不到的事情,请确保每个Pod库只有一个依赖版本".yellow if versions.size > 1
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
require 'cocoapods-mtxx-bin/command/bin/lock/spec_repo'
|
2
|
+
require 'cocoapods-mtxx-bin/command/bin/lock/version'
|
3
|
+
require 'cocoapods-mtxx-bin/command/bin/lock/dependency'
|
4
|
+
|
5
|
+
module Pod
|
6
|
+
class Command
|
7
|
+
class Bin < Command
|
8
|
+
class Lock < Bin
|
9
|
+
include Pod
|
10
|
+
include Config::Mixin
|
11
|
+
|
12
|
+
self.abstract_command = true
|
13
|
+
self.summary = '分析 Pod 依赖关系'
|
14
|
+
|
15
|
+
def initialize(argv)
|
16
|
+
super
|
17
|
+
end
|
18
|
+
|
19
|
+
def run
|
20
|
+
# 校验Podfile是否存在
|
21
|
+
verify_podfile_exists!
|
22
|
+
# 依赖分析
|
23
|
+
@analyze_result = analyze
|
24
|
+
end
|
25
|
+
|
26
|
+
# 依赖分析
|
27
|
+
def analyze
|
28
|
+
UI.title 'Analyze dependencies'.green do
|
29
|
+
analyzer = Pod::Installer::Analyzer.new(config.sandbox, config.podfile, config.lockfile)
|
30
|
+
analyzer.analyze(true )
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
@@ -46,25 +46,32 @@ module Pod
|
|
46
46
|
all_source_list = []
|
47
47
|
error_source_list = []
|
48
48
|
@analyze_result.specifications.each do |specification|
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
error_source_list << specification.name + ' ' + specification.source[:git] + + ' ' + specification.source[:tag]
|
49
|
+
all_source_list << {specification.root.name => specification.root.source}
|
50
|
+
if @error_source && invalid_git_address?(specification)
|
51
|
+
error_source_list << {specification.root.name => specification.root.source}
|
53
52
|
end
|
54
53
|
end
|
55
54
|
if @error_source
|
56
|
-
|
57
|
-
|
55
|
+
if error_source_list.uniq.empty?
|
56
|
+
UI.info "没有有问题的组件".green
|
57
|
+
else
|
58
|
+
UI.info '问题组件,source 为http CI打包不支持http认证,应修改为ssh'.red
|
59
|
+
error_source_list.uniq.map do |source|
|
60
|
+
UI.info "- #{source}".red
|
61
|
+
end
|
62
|
+
end
|
58
63
|
else
|
59
|
-
UI.info '输出所有pod组件source'.
|
60
|
-
|
64
|
+
UI.info '输出所有pod组件source'.yellow
|
65
|
+
all_source_list.uniq.map do |source|
|
66
|
+
UI.info "- #{source}"
|
67
|
+
end
|
61
68
|
end
|
62
69
|
end
|
63
70
|
|
64
71
|
# git clone 地址 是否非法
|
65
|
-
def
|
66
|
-
return false if specification.source[:git].nil?
|
67
|
-
git = specification.source[:git]
|
72
|
+
def invalid_git_address?(specification)
|
73
|
+
return false if specification.root.source[:git].nil?
|
74
|
+
git = specification.root.source[:git]
|
68
75
|
git.include?('http://techgit.meitu.com') || git.include?('https://techgit.meitu.com')
|
69
76
|
end
|
70
77
|
|
@@ -39,7 +39,7 @@ pod bin upload Pod1 1.0.0 Pod1.framework mtxxspecs --spec=Pod1.podspec
|
|
39
39
|
@file = argv.shift_argument
|
40
40
|
@repo = argv.shift_argument
|
41
41
|
@spec = argv.option('spec', nil)
|
42
|
-
@xcode_version = BinHelper.xcode_version
|
42
|
+
@xcode_version = CBin::BuildAll::BinHelper.xcode_version
|
43
43
|
super
|
44
44
|
end
|
45
45
|
|
@@ -128,7 +128,7 @@ pod bin upload Pod1 1.0.0 Pod1.framework mtxxspecs --spec=Pod1.podspec
|
|
128
128
|
|
129
129
|
def source
|
130
130
|
url = "#{CBin.config.binary_download_url_str}/#{@xcode_version}/#{@name}/#{@version}/#{zip_file_name}"
|
131
|
-
{ http: url, type:
|
131
|
+
{ http: url, type: CBin.config.download_file_type }
|
132
132
|
end
|
133
133
|
|
134
134
|
# 上传podspec
|
@@ -1,18 +1,17 @@
|
|
1
|
-
# require 'cocoapods-mtxx-bin/command/bin/initHotKey'
|
2
1
|
require 'cocoapods-mtxx-bin/command/bin/init'
|
3
|
-
require 'cocoapods-mtxx-bin/command/bin/archive'
|
4
|
-
require 'cocoapods-mtxx-bin/command/bin/auto'
|
2
|
+
# require 'cocoapods-mtxx-bin/command/bin/archive'
|
3
|
+
# require 'cocoapods-mtxx-bin/command/bin/auto'
|
5
4
|
# require 'cocoapods-mtxx-bin/command/bin/code'
|
6
|
-
require 'cocoapods-mtxx-bin/command/bin/update'
|
7
|
-
require 'cocoapods-mtxx-bin/command/bin/install'
|
8
|
-
# require 'cocoapods-mtxx-bin/command/bin/imy'
|
5
|
+
# require 'cocoapods-mtxx-bin/command/bin/update'
|
6
|
+
# require 'cocoapods-mtxx-bin/command/bin/install'
|
9
7
|
require 'cocoapods-mtxx-bin/command/bin/repo'
|
10
8
|
require 'cocoapods-mtxx-bin/command/bin/spec'
|
11
9
|
require 'cocoapods-mtxx-bin/command/bin/buildAll'
|
12
10
|
require 'cocoapods-mtxx-bin/command/bin/outputSource'
|
13
11
|
require 'cocoapods-mtxx-bin/command/bin/upload'
|
12
|
+
require 'cocoapods-mtxx-bin/command/bin/lock'
|
14
13
|
require 'cocoapods-mtxx-bin/helpers'
|
15
|
-
|
14
|
+
require 'cocoapods-mtxx-bin/helpers/framework_builder'
|
16
15
|
|
17
16
|
module Pod
|
18
17
|
class Command
|
@@ -41,11 +40,11 @@ module Pod
|
|
41
40
|
|
42
41
|
# self.default_subcommand = 'open'
|
43
42
|
self.summary = '组件二进制化插件'
|
44
|
-
self.description = <<-DESC.strip_heredoc
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
DESC
|
43
|
+
# self.description = <<-DESC.strip_heredoc
|
44
|
+
# 组件二进制化插件
|
45
|
+
#
|
46
|
+
# 利用源码私有源与二进制私有源实现对组件依赖类型的切换
|
47
|
+
# DESC
|
49
48
|
|
50
49
|
def initialize(argv)
|
51
50
|
# !!! 下面这个require必须放在这里,不能放到文件顶部,切记 !!!
|