cocoapods-mtxx-bin 0.0.4 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
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