cocoapods-mtxx-bin 0.0.4 → 0.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9a2655d65a99f939390567f80fbc9fd8e85c4d6994455caeccb3b82bf39a7987
4
- data.tar.gz: aabeca38bc8eb8140dcddfeb760b096ffb66facf8ca0c601d457d3e95d823be1
3
+ metadata.gz: 00c25aad1e1bb13ef8c88e50faf60801931532128a902ab72d40415c6f74809f
4
+ data.tar.gz: 59e39e2c15ea57d12940f89dc13760155a663aeb22ed7077bb6bcc8e0d4c7e43
5
5
  SHA512:
6
- metadata.gz: f3aee79c6b95e790279f73bb03f3ca1ab9e9fecd72e3508ecf9c188c1244368815d19de7b47904f13ba8c1fa37882b649f0f82a56e96c5666ca7329baf19483b
7
- data.tar.gz: 8cfbb96d608773133d5e636e55a56812835001c50e745299833aef178da7c43a6f1022d615dc7ec3cb23960bf1774dd8d2effdefd1bdb9e1207a8385605079d9
6
+ metadata.gz: b6f9e5f92d9a260f67fe3f94ecd695314fcb523defdb9d407a5398be6984c2d1d672cc7a54e47c0d031ee158d91075c8da5a6cc27a9d53c1588fc1cc5a6f639d
7
+ data.tar.gz: 3c678a0494d56ac065707adb58470f33ac94590087b9b2957fd901e23dfd1bcd589214ef42ce5df285ed2511d11af1481202f211faffa4628ac5a39f5a42a072
@@ -2,6 +2,7 @@ require 'cocoapods-mtxx-bin/helpers/buildAll/builder'
2
2
  require 'cocoapods-mtxx-bin/helpers/buildAll/podspec_util'
3
3
  require 'cocoapods-mtxx-bin/helpers/buildAll/zip_file_helper'
4
4
  require 'cocoapods-mtxx-bin/helpers/buildAll/bin_helper'
5
+ require 'cocoapods-mtxx-bin/config/config'
5
6
  require 'yaml'
6
7
  require 'digest'
7
8
 
@@ -18,7 +19,7 @@ module Pod
18
19
 
19
20
  self.summary = '根据壳工程打包所有依赖组件为静态库(static framework)'
20
21
  self.description = <<-DESC
21
- #{self.summary}
22
+ #{summary}
22
23
  DESC
23
24
 
24
25
  def self.options
@@ -30,9 +31,9 @@ module Pod
30
31
  end
31
32
 
32
33
  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 )
34
+ @clean = argv.flag?('clean', false)
35
+ @repo_update = argv.flag?('repo-update', false)
36
+ @full_build = argv.flag?('full-build', false)
36
37
  @base_dir = "#{Pathname.pwd}/build_pods"
37
38
  super
38
39
  end
@@ -70,10 +71,10 @@ module Pod
70
71
 
71
72
  # 读取配置文件
72
73
  def read_config
73
- UI.title "Read config from file `BinConfig.yaml`".green do
74
- config_file = File.join(Dir.pwd, 'BinConfig.yaml')
74
+ UI.title 'Read config from file `BinConfig.yaml`'.green do
75
+ config_file = File.join(CBin.config.binary_dir, 'BinConfig.yaml')
75
76
  return unless File.exist?(config_file)
76
- config = YAML.load(File.open(config_file))
77
+ config = YAML.safe_load(File.open(config_file))
77
78
  return if config.nil?
78
79
  build_config = config['build_config']
79
80
  return if build_config.nil?
@@ -86,38 +87,44 @@ module Pod
86
87
 
87
88
  # 更新repo仓库
88
89
  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
90
+ if @repo_update
91
+ UI.title 'Repo update'.green do
92
+ return if podfile.nil?
93
+ sources_manager = Pod::Config.instance.sources_manager
94
+ podfile.sources.uniq.map do |src|
95
+ # next if src.include?(CDN) || src.include?(MASTER_HTTP) || src.include?(MASTER_SSH)
96
+ next unless src.include?(MT_REPO)
97
+ UI.message "Update repo: #{src}"
98
+ source = sources_manager.source_with_name_or_url(src)
99
+ source.update(false)
100
+ end
101
+ end
102
+ end
100
103
  end
101
104
 
102
105
  # 执行pre build
103
106
  def pre_build
104
- UI.title "Execute the command of pre build".green do
105
- system(@pre_build)
106
- end if @pre_build
107
+ if @pre_build
108
+ UI.title 'Execute the command of pre build'.green do
109
+ system(@pre_build)
110
+ end
111
+ end
107
112
  end
108
113
 
109
114
  # 执行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
115
+ def post_build(_results)
116
+ if @post_build
117
+ UI.title 'Execute the command of post build'.green do
118
+ system(@post_build)
119
+ end
120
+ end
114
121
  end
115
122
 
116
123
  # 获取 podfile
117
124
  def podfile
118
125
  @podfile ||= begin
119
- podfile_path = File.join(Pathname.pwd,"Podfile")
120
- raise "Podfile不存在" unless File.exist?(podfile_path)
126
+ podfile_path = File.join(Pathname.pwd, 'Podfile')
127
+ raise 'Podfile不存在' unless File.exist?(podfile_path)
121
128
  sources_manager = Pod::Config.instance.sources_manager
122
129
  podfile = Podfile.from_file(Pathname.new(podfile_path))
123
130
  podfile_hash = podfile.to_hash
@@ -131,8 +138,8 @@ module Pod
131
138
  # 获取 podfile.lock
132
139
  def lockfile
133
140
  @lockfile ||= begin
134
- lock_path = File.join(Pathname.pwd,"Podfile.lock")
135
- raise "Podfile.lock不存在,请执行pod install" unless File.exist?(lock_path)
141
+ lock_path = File.join(Pathname.pwd, 'Podfile.lock')
142
+ raise 'Podfile.lock不存在,请执行pod install' unless File.exist?(lock_path)
136
143
  Lockfile.from_file(Pathname.new(lock_path))
137
144
  end
138
145
  end
@@ -140,30 +147,30 @@ module Pod
140
147
  # 获取 sandbox
141
148
  def sandbox
142
149
  @sandbox ||= begin
143
- sandbox_path = File.join(Pathname.pwd, "Pods")
144
- raise "Pods文件夹不存在,请执行pod install" unless File.exist?(sandbox_path)
150
+ sandbox_path = File.join(Pathname.pwd, 'Pods')
151
+ raise 'Pods文件夹不存在,请执行pod install' unless File.exist?(sandbox_path)
145
152
  Pod::Sandbox.new(sandbox_path)
146
153
  end
147
154
  end
148
155
 
149
156
  # 根据podfile和podfile.lock分析依赖
150
157
  def analyse
151
- UI.title "Analyze dependencies".green do
158
+ UI.title 'Analyze dependencies'.green do
152
159
  analyzer = Pod::Installer::Analyzer.new(
153
160
  sandbox,
154
161
  podfile,
155
162
  lockfile
156
163
  )
157
- analyzer.analyze(true )
164
+ analyzer.analyze(true)
158
165
  end
159
166
  end
160
167
 
161
168
  # 删除编译产物
162
169
  def clean_build_pods
163
- UI.title "Clean build pods".green do
164
- build_path = Dir.pwd + "/build"
170
+ UI.title 'Clean build pods'.green do
171
+ build_path = Dir.pwd + '/build'
165
172
  FileUtils.rm_rf(build_path) if File.exist?(build_path)
166
- build_pods_path = Dir.pwd + "/build_pods"
173
+ build_pods_path = Dir.pwd + '/build_pods'
167
174
  FileUtils.rm_rf(build_pods_path) if File.exist?(build_pods_path)
168
175
  end
169
176
  end
@@ -268,14 +275,14 @@ module Pod
268
275
 
269
276
  # 展示结果
270
277
  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
278
+ UI.title '打包结果:'.green do
279
+ UI.info '——————————————————————————————————'.green
280
+ UI.info "|#{'Type'.center(20)}|#{'Count'.center(11)}|".green
281
+ UI.info '——————————————————————————————————'.green
275
282
  results.each do |key, value|
276
283
  UI.info "|#{key.center(20)}|#{value.size.to_s.center(11)}|".green
277
284
  end
278
- UI.info "——————————————————————————————————".green
285
+ UI.info '——————————————————————————————————'.green
279
286
 
280
287
  # 打印出失败的 target
281
288
  unless results['Fail'].empty?
@@ -303,7 +310,6 @@ module Pod
303
310
  end
304
311
  result
305
312
  end
306
-
307
313
  end
308
314
  end
309
315
  end
@@ -11,7 +11,7 @@ module Pod
11
11
 
12
12
  def self.options
13
13
  [
14
- ['--bin-url=URL', '配置文件地址,直接从此地址下载配置文件'],
14
+ %w[--bin-url=URL 配置文件地址,直接从此地址下载配置文件],
15
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']
16
16
  ].concat(super)
17
17
  end
@@ -0,0 +1,141 @@
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 'cocoapods-mtxx-bin/config/config'
6
+ require 'yaml'
7
+ require 'digest'
8
+
9
+ module Pod
10
+ class Command
11
+ class Bin < Command
12
+ class OutputSource < Bin
13
+ self.summary = '输出各个组件的source源,默认输出全部组件的source'
14
+ self.description = <<-DESC
15
+ #{summary}
16
+ DESC
17
+
18
+ def self.options
19
+ [
20
+ %w[--error-source 过滤异常的source,比如http的,CI打包只支持SSH认证]
21
+ ].concat(super).uniq
22
+ end
23
+
24
+ def initialize(argv)
25
+ @error_source = argv.flag?('error-source', false)
26
+ super
27
+ end
28
+
29
+ def run
30
+ # 开始时间
31
+ @start_time = Time.now.to_i
32
+ # 更新repo仓库
33
+ repo_update
34
+ # 分析依赖
35
+ @analyze_result = analyse
36
+ # 打印source
37
+ show_cost_source
38
+ # 计算耗时
39
+ show_cost_time
40
+ end
41
+
42
+ private
43
+
44
+ # 打印source
45
+ def show_cost_source
46
+ all_source_list = []
47
+ error_source_list = []
48
+ @analyze_result.specifications.each do |specification|
49
+ next if specification.subspec?
50
+ all_source_list << specification.source
51
+ if @error_source && verified_git_address(specification)
52
+ error_source_list << specification.name + ' ' + specification.source[:git] + + ' ' + specification.source[:tag]
53
+ end
54
+ end
55
+ if @error_source
56
+ UI.info '问题组件,source 为http CI打包不支持http认证,应修改为ssh'.red
57
+ UI.info error_source_list.to_s.red
58
+ else
59
+ UI.info '输出所有pod组件source'.green
60
+ UI.info error_source_list.to_s.green
61
+ end
62
+ end
63
+
64
+ # git clone 地址 是否非法
65
+ def verified_git_address(specification)
66
+ return false if specification.source[:git].nil?
67
+ git = specification.source[:git]
68
+ git.include?('http://techgit.meitu.com') || git.include?('https://techgit.meitu.com')
69
+ end
70
+
71
+ # 打印耗时
72
+ def show_cost_time
73
+ return if @start_time.nil?
74
+ UI.info "总耗时:#{Time.now.to_i - @start_time}s".green
75
+ end
76
+
77
+ # 更新repo仓库
78
+ def repo_update
79
+ if @repo_update
80
+ UI.title 'Repo update'.green do
81
+ return if podfile.nil?
82
+ sources_manager = Pod::Config.instance.sources_manager
83
+ podfile.sources.uniq.map do |src|
84
+ # next if src.include?(CDN) || src.include?(MASTER_HTTP) || src.include?(MASTER_SSH)
85
+ next unless src.include?(MT_REPO)
86
+ UI.message "Update repo: #{src}"
87
+ source = sources_manager.source_with_name_or_url(src)
88
+ source.update(false)
89
+ end
90
+ end
91
+ end
92
+ end
93
+
94
+ # 获取 podfile
95
+ def podfile
96
+ @podfile ||= begin
97
+ podfile_path = File.join(Pathname.pwd, 'Podfile')
98
+ raise 'Podfile不存在' unless File.exist?(podfile_path)
99
+ sources_manager = Pod::Config.instance.sources_manager
100
+ podfile = Podfile.from_file(Pathname.new(podfile_path))
101
+ podfile_hash = podfile.to_hash
102
+ podfile_hash['sources'] = (podfile_hash['sources'] || []).concat(sources_manager.code_source_list.map(&:url))
103
+ podfile_hash['sources'] << sources_manager.binary_source.url
104
+ podfile_hash['sources'].uniq!
105
+ Podfile.from_hash(podfile_hash)
106
+ end
107
+ end
108
+
109
+ # 获取 podfile.lock
110
+ def lockfile
111
+ @lockfile ||= begin
112
+ lock_path = File.join(Pathname.pwd, 'Podfile.lock')
113
+ raise 'Podfile.lock不存在,请执行pod install' unless File.exist?(lock_path)
114
+ Lockfile.from_file(Pathname.new(lock_path))
115
+ end
116
+ end
117
+
118
+ # 获取 sandbox
119
+ def sandbox
120
+ @sandbox ||= begin
121
+ sandbox_path = File.join(Pathname.pwd, 'Pods')
122
+ raise 'Pods文件夹不存在,请执行pod install' unless File.exist?(sandbox_path)
123
+ Pod::Sandbox.new(sandbox_path)
124
+ end
125
+ end
126
+
127
+ # 根据podfile和podfile.lock分析依赖
128
+ def analyse
129
+ UI.title 'Analyze dependencies'.green do
130
+ analyzer = Pod::Installer::Analyzer.new(
131
+ sandbox,
132
+ podfile,
133
+ lockfile
134
+ )
135
+ analyzer.analyze(true)
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
@@ -0,0 +1,173 @@
1
+ require 'json'
2
+
3
+ module Pod
4
+ class Command
5
+ class Bin < Command
6
+ class Upload < Bin
7
+ include Pod
8
+
9
+ self.summary = "上传二进制文件及podspec"
10
+ self.description = <<-DESC
11
+ #{self.summary}
12
+
13
+ `NAME`: 库名【必填】\n
14
+ `VERSION`: 版本号【必填】\n
15
+ `FILE`: 需要压缩的二进制文件或目录【必填】\n
16
+ `REPO`: 上传podspec的仓库,可以通过`pod repo list`查看【必填】\n
17
+
18
+ e.g.:\n
19
+ pod bin upload Pod1 1.0.0 Pod1.framework mtxxspecs --spec=Pod1.podspec
20
+ DESC
21
+
22
+ self.arguments = [
23
+ CLAide::Argument.new('NAME', true ),
24
+ CLAide::Argument.new('VERSION', true),
25
+ CLAide::Argument.new('FILE', true),
26
+ CLAide::Argument.new('REPO', true)
27
+ ]
28
+
29
+ def self.options
30
+ [
31
+ %w[--spec=SPEC 指定podspec文件路径,如果不指定,将在当前目录下查找]
32
+ ].concat(super)
33
+ end
34
+
35
+ def initialize(argv)
36
+ @name = argv.shift_argument
37
+ @version = argv.shift_argument
38
+ @file = argv.shift_argument
39
+ @repo = argv.shift_argument
40
+ @spec = argv.option('spec', nil)
41
+ super
42
+ end
43
+
44
+ def run
45
+ # 参数检查
46
+ argvsCheck
47
+ # 压缩文件
48
+ zip_file
49
+ # 上传文件
50
+ upload_zip_file
51
+ # 修改podspec
52
+ modify_spec
53
+ # 上传podspec
54
+ upload_spec
55
+ end
56
+
57
+ private
58
+
59
+ # 参数检查
60
+ def argvsCheck
61
+ raise Informative, "name不能为空" if @name.nil?
62
+ raise Informative, "version不能为空" if @version.nil?
63
+ raise Informative, "repo不能为空" if @repo.nil?
64
+ raise Informative, "未找到需要压缩的二进制文件" if @file.nil?
65
+ raise Informative, "未找到podspec文件" unless File.exist?(podspec)
66
+ end
67
+
68
+ # 压缩文件
69
+ def zip_file
70
+ UI.title "压缩二进制文件`#{zip_file_name}`".yellow do
71
+ output_zip_file = File.join(Dir.pwd, zip_file_name)
72
+ FileUtils.rm_f(output_zip_file) if File.exist?(output_zip_file)
73
+ command = "zip --symlinks -r #{zip_file_name} #{@file}"
74
+ UI.info "#{command}"
75
+ `#{command}`
76
+ raise Informative, "压缩二进制文件失败" unless File.exist?(output_zip_file)
77
+ end
78
+ end
79
+
80
+ # 压缩后的zip包名
81
+ def zip_file_name
82
+ @zip_file_name ||= begin
83
+ "#{@name}_#{@version}.zip"
84
+ end
85
+ end
86
+
87
+ # 上传文件
88
+ def upload_zip_file
89
+ UI.title "上传二进制文件`#{zip_file_name}`".yellow do
90
+ zip_file = File.join(Dir.pwd, zip_file_name)
91
+ raise Informative, "`#{@zip_file_name}`不存在" unless File.exist?(zip_file)
92
+ upload_url = CBin.config.binary_upload_url_str
93
+ command = "curl -F \"name=#{@name}\" -F \"version=#{@version}\" -F \"file=@#{zip_file}\" #{upload_url}"
94
+ UI.info "#{command}"
95
+ json = `#{command}`
96
+ UI.info json
97
+ begin
98
+ error_code = JSON.parse(json)["error_code"]
99
+ raise Informative, "`#{zip_file_name}`上传失败" unless error_code == 0
100
+ UI.info "`#{zip_file_name}`上传成功".green
101
+ rescue JSON::ParserError => e
102
+ raise Informative, "`#{zip_file_name}`上传失败\n#{e.to_s}"
103
+ end
104
+ end
105
+ end
106
+
107
+ # 修改podspec
108
+ def modify_spec
109
+ UI.title "修改podspec:`#{podspec}`".yellow do
110
+ spec = Specification.from_file(podspec)
111
+ spec_hash = spec.to_hash
112
+ spec_hash['version'] = @version
113
+ spec_hash['source'] = source
114
+ spec = Specification.from_hash(spec_hash)
115
+ write_podspec_json(spec)
116
+ end
117
+ end
118
+
119
+ # 写入podspec
120
+ def write_podspec_json(spec)
121
+ FileUtils.rm_f(podspec_json_file) if File.exist?(podspec_json_file)
122
+ File.open(podspec_json_file, "w+") do |f|
123
+ f.write(spec.to_pretty_json)
124
+ end
125
+ end
126
+
127
+ def source
128
+ url = "#{CBin.config.binary_download_url_str}/#{@name}/#{@version}/#{zip_file_name}"
129
+ { http: url, type: 'zip' }
130
+ end
131
+
132
+ # 上传podspec
133
+ def upload_spec
134
+ UI.title "推送podspec:`#{podspec_json_file_name}`".yellow do
135
+ raise Informative, "`#{podspec_json_file_name}`不存在" unless File.exist?(podspec_json_file)
136
+ argvs = %W[#{@repo} #{podspec_json_file} --skip-import-validation --use-libraries --allow-warnings --verbose]
137
+
138
+ begin
139
+ push = Pod::Command::Repo::Push.new(CLAide::ARGV.new(argvs))
140
+ push.validate!
141
+ push.run
142
+ rescue Pod::StandardError => e
143
+ raise Informative, "推送podspec:`#{podspec_json_file_name}失败\n#{e.to_s}"
144
+ end
145
+ # 上传完成后,清理工作目录
146
+ FileUtils.rm_f(podspec_json_file) if File.exist?(podspec_json_file)
147
+ FileUtils.rm_r('binary') if File.exist?('binary')
148
+ FileUtils.rm_f(zip_file_name) if File.exist?(zip_file_name)
149
+ end
150
+ end
151
+
152
+ def binary_dir
153
+ File.join(Dir.pwd, 'binary')
154
+ end
155
+
156
+ def podspec_json_file_name
157
+ "#{@name}.podspec.json"
158
+ end
159
+
160
+ def podspec_json_file
161
+ File.join(Dir.pwd, podspec_json_file_name)
162
+ end
163
+
164
+ def podspec
165
+ @spec ||= begin
166
+ "#{@name}.podspec"
167
+ end
168
+ end
169
+
170
+ end
171
+ end
172
+ end
173
+ end
@@ -9,6 +9,8 @@ require 'cocoapods-mtxx-bin/command/bin/install'
9
9
  require 'cocoapods-mtxx-bin/command/bin/repo'
10
10
  require 'cocoapods-mtxx-bin/command/bin/spec'
11
11
  require 'cocoapods-mtxx-bin/command/bin/buildAll'
12
+ require 'cocoapods-mtxx-bin/command/bin/outputSource'
13
+ require 'cocoapods-mtxx-bin/command/bin/upload'
12
14
  require 'cocoapods-mtxx-bin/helpers'
13
15
  # require 'cocoapods-mtxx-bin/native'
14
16
 
@@ -41,7 +43,7 @@ module Pod
41
43
  self.summary = '组件二进制化插件'
42
44
  self.description = <<-DESC.strip_heredoc
43
45
  组件二进制化插件
44
-
46
+
45
47
  利用源码私有源与二进制私有源实现对组件依赖类型的切换
46
48
  DESC
47
49
 
@@ -13,12 +13,12 @@ module CBin
13
13
  def template_hash
14
14
  {
15
15
  'configuration_env' => { description: '编译环境', default: 'dev', selection: %w[dev debug_iphoneos release_iphoneos] },
16
- 'code_repo_url_list' => { description: '源码私有源 Git 地址 ,支持多私有源,多个私有源用分号区分', default: 'git@techgit.meitu.com:iMeituPic/mtsourcespecs.git' },
16
+ 'code_repo_url_list' => { description: '源码私有源 Git 地址,多个私有源用分号区分', default: 'git@techgit.meitu.com:iMeituPic/mtsourcespecs.git' },
17
17
  'binary_repo_url' => { description: '二进制私有源 Git 地址', default: 'git@techgit.meitu.com:iMeituPic/mtbinaryspecs.git' },
18
- 'binary_upload_url' => { description: '二进制下载地址,内部会依次传入组件名称与版本', default: 'http://pre.intapi.xiuxiu.meitu.com/internal/file/upload.json' },
18
+ 'binary_upload_url' => { description: '二进制文件上传地址', default: 'http://pre.intapi.xiuxiu.meitu.com/internal/file/upload.json' },
19
19
  # 'binary_type' => { description: '二进制打包类型', default: 'framework', selection: %w[framework library] },
20
- 'binary_download_url' => { description: '二进制下载地址,内部会依次传入组件名称与版本,替换字符串中的 %s', default: 'https://manhattan-test.obs.cn-north-4.myhuaweicloud.com:443/ios/binary' },
21
- 'download_file_type' => { description: '下载二进制文件类型', default: 'zip', selection: %w[zip tgz tar tbz txz dmg] }
20
+ 'binary_download_url' => { description: '二进制文件下载地址,内部会依次传入组件名称与版本,替换字符串中的 %s', default: 'https://manhattan-test.obs.cn-north-4.myhuaweicloud.com:443/ios/binary' },
21
+ 'download_file_type' => { description: '二进制文件类型', default: 'zip', selection: %w[zip tgz tar tbz txz dmg] }
22
22
  }
23
23
  end
24
24
 
@@ -36,12 +36,22 @@ module CBin
36
36
  raise "===== #{configuration_env} %w[dev debug_iphoneos release_iphoneos]===="
37
37
  end
38
38
 
39
- File.expand_path("#{Pod::Config.instance.home_dir}/#{file}")
39
+ # File.expand_path("#{Pod::Config.instance.home_dir}/#{file}")
40
+ File.expand_path("#{binary_dir}/#{file}")
40
41
  end
41
42
 
42
43
  def config_file_with_configuration_env_list(configuration_env)
43
44
  file = config_dev_file
44
- File.expand_path("#{Pod::Config.instance.home_dir}/#{file}")
45
+ # File.expand_path("#{Pod::Config.instance.home_dir}/#{file}")
46
+ File.expand_path("#{binary_dir}/#{file}")
47
+ end
48
+
49
+ def binary_dir
50
+ @binary_dir ||= begin
51
+ binary_dir = "#{Pod::Config.instance.project_root}/binary"
52
+ FileUtils.mkdir(binary_dir) unless File.exist?(binary_dir)
53
+ binary_dir
54
+ end
45
55
  end
46
56
 
47
57
  def configuration_env
@@ -40,10 +40,10 @@ module CBin
40
40
  def wellcome_message
41
41
  print <<~EOF
42
42
 
43
- 开始设置二进制化初始信息.
43
+ 设置插件配置信息.
44
44
  所有的信息都会保存在 #{CBin.config.config_file} 文件中.
45
- %w[bin_dev.yml bin_debug_iphoneos.yml bin_release_iphoneos.yml]
46
- 你可以在对应目录下手动添加编辑该文件. 文件包含的配置信息样式如下:
45
+ 你可以在对应目录下手动添加编辑该文件.
46
+ 文件包含的配置信息样式如下:
47
47
 
48
48
  #{CBin.config.default_config.to_yaml}
49
49
  EOF
@@ -1,5 +1,5 @@
1
1
  module CBin
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.8"
3
3
  end
4
4
 
5
5
  module Pod
@@ -10,6 +10,8 @@ module CBin
10
10
  specs = specifications.map(&:name).select { |spec|
11
11
  spec.include?(pod_name) && !spec.include?('/Binary')
12
12
  }.sort!
13
+ xcode_version = `xcodebuild -version`.split(' ').join('')
14
+ specs << xcode_version
13
15
  specs_str = specs.join('')
14
16
  "#{original_version}.bin#{Digest::MD5.hexdigest(specs_str)[0,6]}"
15
17
  end
@@ -94,12 +94,16 @@ module CBin
94
94
  "#{@base_dir}/#{@pod_target}/Temp"
95
95
  end
96
96
 
97
+ def configuration
98
+ "Debug"
99
+ end
100
+
97
101
  def iphoneos
98
- "Release-iphoneos"
102
+ "#{configuration}-iphoneos"
99
103
  end
100
104
 
101
105
  def iphonesimulator
102
- "Release-iphonesimulator"
106
+ "#{configuration}-iphonesimulator"
103
107
  end
104
108
 
105
109
  # 需要排除的资源文件后缀
@@ -130,7 +134,7 @@ CONFIGURATION_TEMP_DIR=#{temp_dir} \
130
134
  BUILD_ROOT=#{product_dir} \
131
135
  BUILD_DIR=#{product_dir} \
132
136
  clean build \
133
- -configuration Release \
137
+ -configuration #{configuration} \
134
138
  -target #{@pod_target} \
135
139
  -project #{project}
136
140
  BUILD
@@ -8,6 +8,7 @@ require 'cocoapods-mtxx-bin/native/installation_options'
8
8
  require 'cocoapods-mtxx-bin/gem_version'
9
9
  require 'cocoapods-mtxx-bin/command/bin/archive'
10
10
  require 'cocoapods-mtxx-bin/helpers/buildAll/bin_helper'
11
+ require 'cocoapods-mtxx-bin/config/config'
11
12
 
12
13
  module Pod
13
14
  class Resolver
@@ -90,8 +91,8 @@ module Pod
90
91
 
91
92
  # 读取黑名单
92
93
  def read_black_list
93
- project_root = Pod::Config.instance.project_root
94
- config_file = File.join(project_root, 'BinConfig.yaml')
94
+ binary_dir = CBin.config.binary_dir
95
+ config_file = File.join(binary_dir, 'BinConfig.yaml')
95
96
  return nil unless File.exist?(config_file)
96
97
  config = YAML.load(File.open(config_file))
97
98
  return nil if config.nil?
@@ -199,13 +200,6 @@ module Pod
199
200
 
200
201
  UI.message "specification = #{specification}"
201
202
  # 组件是 subspec
202
- # subspec 需要特殊处理
203
- # 如果是源码,则获取相应 subspec 的 specification
204
- # 如果是二进制,则获取整个 specification
205
- # if !use_binary && rspec.spec.subspec?
206
- # specification = specification.subspec_by_name(rspec.name, false, true)
207
- # end
208
-
209
203
  if rspec.spec.subspec?
210
204
  specification = specification.subspec_by_name(rspec.name, false, true)
211
205
  end
@@ -1,5 +1,6 @@
1
1
  require 'cocoapods-mtxx-bin/native/sources_manager'
2
2
  require 'cocoapods-mtxx-bin/command/bin/repo/update'
3
+ require 'cocoapods-mtxx-bin/config/config'
3
4
  require 'cocoapods/user_interface'
4
5
  require 'yaml'
5
6
 
@@ -44,7 +45,7 @@ Pod::HooksManager.register('cocoapods-mtxx-bin', :source_provider) do |context,
44
45
  podfile = Pod::Config.instance.podfile
45
46
  if podfile
46
47
  # 读取配置文件
47
- project_root = Pod::Config.instance.project_root
48
+ project_root = CBin.config.binary_dir
48
49
  config_file = File.join(project_root, 'BinConfig.yaml')
49
50
  if File.exist?(config_file)
50
51
  config = YAML.load(File.open(config_file))
metadata CHANGED
@@ -1,43 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cocoapods-mtxx-bin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jensen
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-03-22 00:00:00.000000000 Z
11
+ date: 2022-06-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: parallel
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: 1.22.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: 1.22.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: cocoapods
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - '='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 1.10.2
34
+ - - "<="
35
+ - !ruby/object:Gem::Version
36
+ version: 1.11.2
34
37
  type: :runtime
35
38
  prerelease: false
36
39
  version_requirements: !ruby/object:Gem::Requirement
37
40
  requirements:
38
- - - '='
41
+ - - ">="
39
42
  - !ruby/object:Gem::Version
40
43
  version: 1.10.2
44
+ - - "<="
45
+ - !ruby/object:Gem::Version
46
+ version: 1.11.2
41
47
  - !ruby/object:Gem::Dependency
42
48
  name: cocoapods-generate
43
49
  requirement: !ruby/object:Gem::Requirement
@@ -102,6 +108,7 @@ files:
102
108
  - lib/cocoapods-mtxx-bin/command/bin/initHotKey.rb
103
109
  - lib/cocoapods-mtxx-bin/command/bin/install.rb
104
110
  - lib/cocoapods-mtxx-bin/command/bin/lib/lint.rb
111
+ - lib/cocoapods-mtxx-bin/command/bin/outputSource.rb
105
112
  - lib/cocoapods-mtxx-bin/command/bin/repo.rb
106
113
  - lib/cocoapods-mtxx-bin/command/bin/repo/push.rb
107
114
  - lib/cocoapods-mtxx-bin/command/bin/repo/update.rb
@@ -109,6 +116,7 @@ files:
109
116
  - lib/cocoapods-mtxx-bin/command/bin/spec/create.rb
110
117
  - lib/cocoapods-mtxx-bin/command/bin/spec/lint.rb
111
118
  - lib/cocoapods-mtxx-bin/command/bin/update.rb
119
+ - lib/cocoapods-mtxx-bin/command/bin/upload.rb
112
120
  - lib/cocoapods-mtxx-bin/config/config.rb
113
121
  - lib/cocoapods-mtxx-bin/config/config_asker.rb
114
122
  - lib/cocoapods-mtxx-bin/config/config_builder.rb