cocoapods-tdf-bin 0.0.26 → 0.0.28
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/README.md +14 -1
- data/lib/cocoapods-tdf-bin/command/bin/batch.rb +2 -0
- data/lib/cocoapods-tdf-bin/command/bin/spec/push.rb +2 -0
- data/lib/cocoapods-tdf-bin/gem_version.rb +1 -1
- data/lib/cocoapods-tdf-bin/helpers/build_helper.rb +3 -2
- data/lib/cocoapods-tdf-bin/helpers/build_utils.rb +1 -0
- data/lib/cocoapods-tdf-bin/helpers/framework_builder.rb +45 -9
- data/lib/cocoapods-tdf-bin/helpers/spec_creator.rb +4 -4
- data/lib/cocoapods-tdf-bin/helpers/spec_source_creator.rb +30 -13
- data/lib/cocoapods-tdf-bin/helpers/upload_helper.rb +2 -1
- data/lib/cocoapods-tdf-bin/native/resolver.rb +11 -1
- data/lib/cocoapods-tdf-bin/native/validator.rb +57 -15
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9bdb076bb3b6e381790ebe749eb7c95ec28a50c80d9881dcdba36f2a65fc59b7
|
4
|
+
data.tar.gz: 68aad5923bd08c16e4ff9cacc08e8fdb41b4295504affbb306e08524cc65ac4f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 40db87d009cb7925f78947f40aa2bfaa32fe6bae59df182dab8ec99a61bb7a3cb906c4b43fb95dcb0adc7654709ac42933d7a1c6f65c955dee1ae2cd3a223107
|
7
|
+
data.tar.gz: ad74c200ef28f06b6f2f9cbf63dbb464c0ca628092b6b22be36bc2e85ede55c8a3ccb30125f4e2d3d9811a8ec1c22ba59c6cb89e56448e4fee3f5a6b99f0b349
|
data/README.md
CHANGED
@@ -4,7 +4,7 @@ cocoapods-tdf-bin功能点:
|
|
4
4
|
|
5
5
|
- 组件二进制化,`无入侵式`支持组件二进制化,完全自动化,无需手动操作。致力于解决Ci打包速度慢、研发编译慢等编译问题。
|
6
6
|
|
7
|
-
cocoapods-
|
7
|
+
cocoapods-tdf-bin插件所关联的组件二进制化策略:
|
8
8
|
|
9
9
|
- 预先将打包成 `.framework` 的组件保存到静态服务器上,并在 `install` 时,去下载组件对应的二进制版本,以减少组件编译时间,达到加快 App 打包、组件发布等操作的目的。
|
10
10
|
|
@@ -99,5 +99,18 @@ set_use_source_pods [
|
|
99
99
|
]
|
100
100
|
```
|
101
101
|
|
102
|
+
#### 5. 使用 batch 命令
|
103
|
+
```ruby
|
104
|
+
batch_pod_local [
|
105
|
+
"TDFSunKitchenModule",
|
106
|
+
"TDFRetailStock",
|
107
|
+
], "本地路径"
|
108
|
+
|
109
|
+
batch_pod_remote [
|
110
|
+
"TDFSunKitchenModule",
|
111
|
+
"TDFRetailStock",
|
112
|
+
], "分支名"
|
113
|
+
```
|
114
|
+
|
102
115
|
|
103
116
|
|
@@ -27,11 +27,13 @@ module Pod
|
|
27
27
|
end
|
28
28
|
|
29
29
|
def run
|
30
|
+
|
30
31
|
podfile = File.join(Pathname.pwd, "Podfile")
|
31
32
|
podfile_instance = Pod::Podfile.from_file(podfile)
|
32
33
|
if podfile_instance.get_batch_local_pods == nil
|
33
34
|
help! "没有本地依赖的组件"
|
34
35
|
end
|
36
|
+
|
35
37
|
if @arguments.size == 1 && @arguments[0] == "clone"
|
36
38
|
clone_all(podfile_instance)
|
37
39
|
elsif @arguments.size == 1 && @arguments[0] == "done"
|
@@ -55,7 +55,7 @@ module CBin
|
|
55
55
|
source_dir = Dir.pwd
|
56
56
|
file_accessor = Sandbox::FileAccessor.new(Pathname.new('.').expand_path, @spec.consumer(@platform))
|
57
57
|
Dir.chdir(workspace_directory) do
|
58
|
-
builder = CBin::Framework::Builder.new(@spec, file_accessor, @platform, source_dir, @isRootSpec, @build_model
|
58
|
+
builder = CBin::Framework::Builder.new(@spec, file_accessor, @platform, source_dir, @isRootSpec, @build_model)
|
59
59
|
@@build_defines = builder.build if @isRootSpec
|
60
60
|
begin
|
61
61
|
@framework_path = builder.lipo_build(@@build_defines) unless @skip_archive
|
@@ -118,7 +118,8 @@ module CBin
|
|
118
118
|
end
|
119
119
|
|
120
120
|
def framework_name
|
121
|
-
|
121
|
+
@spec.name + ".xcframework"
|
122
|
+
# CBin::Config::Builder.instance.framework_name(@spec)
|
122
123
|
end
|
123
124
|
|
124
125
|
def framework_name_zip
|
@@ -40,11 +40,13 @@ module CBin
|
|
40
40
|
def lipo_build(defines)
|
41
41
|
UI.section("Building static Library #{@spec}") do
|
42
42
|
|
43
|
-
cp_framework_to_source_dir
|
44
|
-
|
43
|
+
# cp_framework_to_source_dir
|
44
|
+
build_xcframework_for_ios
|
45
|
+
# build_static_library_for_ios
|
45
46
|
|
46
47
|
copy_resources
|
47
48
|
|
49
|
+
# link_header
|
48
50
|
end
|
49
51
|
framework
|
50
52
|
end
|
@@ -53,7 +55,6 @@ module CBin
|
|
53
55
|
|
54
56
|
def cp_framework_to_source_dir
|
55
57
|
framework_name = "#{@spec.name}.framework"
|
56
|
-
framework_dir = "./build-armv7/#{framework_name}" if File.exist?('./build-armv7')
|
57
58
|
framework_dir = "./build-arm64/#{framework_name}" if File.exist?('./build-arm64')
|
58
59
|
target_dir = File.join(CBin::Config::Builder.instance.zip_dir,framework_name)
|
59
60
|
|
@@ -81,7 +82,7 @@ module CBin
|
|
81
82
|
# archs = %w[i386 x86_64]
|
82
83
|
archs = ios_architectures_sim
|
83
84
|
archs.map do |arch|
|
84
|
-
xcodebuild(defines, "-sdk iphonesimulator ARCHS=\'#{arch}\' ", "build-#{arch}"
|
85
|
+
xcodebuild(defines, "-sdk iphonesimulator ARCHS=\'#{arch}\' ", "build-#{arch}", @build_model)
|
85
86
|
end
|
86
87
|
end
|
87
88
|
|
@@ -94,6 +95,28 @@ module CBin
|
|
94
95
|
file
|
95
96
|
end
|
96
97
|
|
98
|
+
=begin
|
99
|
+
制作 xcframework
|
100
|
+
=end
|
101
|
+
def build_xcframework_for_ios
|
102
|
+
UI.message "Building ios libraries with archs #{ios_architectures}"
|
103
|
+
|
104
|
+
framework_name = "#{@spec.name}.xcframework"
|
105
|
+
output = File.join(CBin::Config::Builder.instance.zip_dir,framework_name)
|
106
|
+
|
107
|
+
build_path = Pathname("build")
|
108
|
+
build_path.path unless build_path.exist?
|
109
|
+
|
110
|
+
# if is_debug_model
|
111
|
+
libs = (ios_architectures + ios_architectures_sim) .map do |arch|
|
112
|
+
library = "-framework build-#{arch}/#{@spec.name}.framework"
|
113
|
+
library
|
114
|
+
end
|
115
|
+
|
116
|
+
UI.message "xcodebuild -create-xcframework #{libs.join(' ')} -output #{output}"
|
117
|
+
`xcodebuild -create-xcframework #{libs.join(' ')} -output #{output}`
|
118
|
+
end
|
119
|
+
|
97
120
|
=begin
|
98
121
|
lipo合并 二进制
|
99
122
|
=end
|
@@ -133,7 +156,7 @@ module CBin
|
|
133
156
|
# iphone5,iphone5s以下的模拟器
|
134
157
|
# >x86_64
|
135
158
|
# iphone6以上的模拟器
|
136
|
-
archs = %w[arm64
|
159
|
+
archs = %w[arm64]
|
137
160
|
# archs = %w[x86_64 arm64 armv7s i386]
|
138
161
|
# @vendored_libraries.each do |library|
|
139
162
|
# archs = `lipo -info #{library}`.split & archs
|
@@ -202,12 +225,22 @@ module CBin
|
|
202
225
|
end
|
203
226
|
end
|
204
227
|
|
228
|
+
def link_header
|
229
|
+
header_dir = "#{CBin::Config::Builder.instance.zip_dir}/#{@spec.name}.xcframework/ios-arm64/#{@spec.name}.framework/Headers"
|
230
|
+
target_headers_dir = "#{CBin::Config::Builder.instance.zip_dir}/#{@spec.name}.xcframework/Headers"
|
231
|
+
FileUtils.mkdir_p(target_headers_dir) unless File.exist?(target_headers_dir)
|
232
|
+
Dir.foreach(header_dir) do |file|
|
233
|
+
if file !="." and file !=".."
|
234
|
+
`ln -s #{header_dir}/#{file} #{target_headers_dir}`
|
235
|
+
end
|
236
|
+
end
|
237
|
+
end
|
238
|
+
|
205
239
|
def copy_resources
|
206
240
|
resource_dir = './build/*.bundle'
|
207
|
-
resource_dir = './build-armv7/*.bundle' if File.exist?('./build-armv7')
|
208
241
|
resource_dir = './build-arm64/*.bundle' if File.exist?('./build-arm64')
|
209
242
|
|
210
|
-
framework_name = "#{@spec.name}.
|
243
|
+
framework_name = "#{@spec.name}.xcframework"
|
211
244
|
resource_target_dir = File.join(CBin::Config::Builder.instance.zip_dir,framework_name,"Resources")
|
212
245
|
|
213
246
|
FileUtils.mkdir_p(resource_target_dir) unless File.exist?(resource_target_dir)
|
@@ -267,8 +300,11 @@ module CBin
|
|
267
300
|
not expand_suffix(suffix)
|
268
301
|
end
|
269
302
|
|
270
|
-
|
271
|
-
|
303
|
+
if escape_resource_arr.count > 0
|
304
|
+
UI.message "Copying resources #{escape_resource_arr}"
|
305
|
+
`cp -rp #{escape_resource_arr.join(' ')} #{resource_target_dir}`
|
306
|
+
end
|
307
|
+
|
272
308
|
end
|
273
309
|
end
|
274
310
|
|
@@ -59,7 +59,7 @@ module CBin
|
|
59
59
|
# license | resource_bundles | vendored_libraries
|
60
60
|
|
61
61
|
# Project Linkin
|
62
|
-
@spec.vendored_frameworks = "#{code_spec.root.name}.
|
62
|
+
@spec.vendored_frameworks = "#{code_spec.root.name}.xcframework"
|
63
63
|
|
64
64
|
# Resources
|
65
65
|
extnames = []
|
@@ -75,8 +75,8 @@ module CBin
|
|
75
75
|
@spec.source = binary_source
|
76
76
|
|
77
77
|
# Source Code
|
78
|
-
@spec.source_files = framework_contents('Headers/*')
|
79
|
-
@spec.public_header_files = framework_contents('Headers/*')
|
78
|
+
# @spec.source_files = framework_contents('Headers/*')
|
79
|
+
# @spec.public_header_files = framework_contents('Headers/*')
|
80
80
|
|
81
81
|
# Unused for binary
|
82
82
|
spec_hash = @spec.to_hash
|
@@ -131,7 +131,7 @@ module CBin
|
|
131
131
|
end
|
132
132
|
|
133
133
|
def framework_contents(name)
|
134
|
-
["#{code_spec.root.name}.
|
134
|
+
["#{code_spec.root.name}.xcframework"].map { |path| "#{path}/#{name}" }
|
135
135
|
end
|
136
136
|
|
137
137
|
def binary_source_files
|
@@ -63,9 +63,9 @@ module CBin
|
|
63
63
|
|
64
64
|
# Resources
|
65
65
|
extnames = []
|
66
|
-
extnames << '*.bundle' if
|
67
|
-
if
|
68
|
-
extnames +=
|
66
|
+
extnames << '*.bundle' if contain_bundles
|
67
|
+
if code_spec_resource.any?
|
68
|
+
extnames += code_spec_resource.map { |r| File.basename(r) }
|
69
69
|
end
|
70
70
|
if extnames.any?
|
71
71
|
@spec.resources = framework_contents('Resources').flat_map { |r| extnames.map { |e| "#{r}/#{e}" } }
|
@@ -132,13 +132,13 @@ module CBin
|
|
132
132
|
# license | resource_bundles | vendored_libraries
|
133
133
|
|
134
134
|
# Project Linkin
|
135
|
-
@spec.vendored_frameworks = "#{code_spec.root.name}.
|
135
|
+
@spec.vendored_frameworks = "#{code_spec.root.name}.xcframework"
|
136
136
|
|
137
137
|
# Resources
|
138
138
|
extnames = []
|
139
|
-
extnames << '*.bundle' if
|
140
|
-
if
|
141
|
-
extnames +=
|
139
|
+
extnames << '*.bundle' if contain_bundles
|
140
|
+
if code_spec_resource.any?
|
141
|
+
extnames += code_spec_resource.map { |r| File.basename(r) }
|
142
142
|
end
|
143
143
|
|
144
144
|
extnames = extnames.select do | extname |
|
@@ -147,7 +147,7 @@ module CBin
|
|
147
147
|
|
148
148
|
if extnames.any?
|
149
149
|
resources = framework_contents('Resources').flat_map { |r| extnames.map { |e| "#{r}/#{e}" } }
|
150
|
-
resources << "#{code_spec.root.name}.framework/*.{storyboardc,nib,mom,momd,cdm}"
|
150
|
+
resources << "#{code_spec.root.name}.xcframework/ios-arm64/#{code_spec.root.name}.framework/*.{storyboardc,nib,mom,momd,cdm}"
|
151
151
|
@spec.resources = resources
|
152
152
|
end
|
153
153
|
|
@@ -155,8 +155,9 @@ module CBin
|
|
155
155
|
@spec.source = binary_source
|
156
156
|
|
157
157
|
# Source Code
|
158
|
-
@spec.source_files = framework_contents(
|
159
|
-
@spec.public_header_files = framework_contents(
|
158
|
+
# @spec.source_files = framework_contents("Headers/*.h")
|
159
|
+
# @spec.public_header_files = framework_contents("ios-arm64/#{code_spec.root.name}.framework/Headers/*.h")
|
160
|
+
# @spec.header_mappings_dir = "#{code_spec.root.name}.xcframework/ios-arm64/#{code_spec.root.name}.framework/Headers"
|
160
161
|
|
161
162
|
# Unused for binary
|
162
163
|
spec_hash = @spec.to_hash
|
@@ -164,6 +165,7 @@ module CBin
|
|
164
165
|
spec_hash.delete('resource_bundles')
|
165
166
|
spec_hash.delete('exclude_files')
|
166
167
|
spec_hash.delete('preserve_paths')
|
168
|
+
# spec_hash.delete('source_files')
|
167
169
|
# 这里不确定 vendored_libraries 指定的时动态/静态库
|
168
170
|
# 如果是静态库的话,需要移除,否则就不移除
|
169
171
|
# 最好是静态库都独立成 Pod ,cocoapods-package 打静态库去 collect 目标文件时好做过滤
|
@@ -189,6 +191,18 @@ module CBin
|
|
189
191
|
@spec
|
190
192
|
end
|
191
193
|
|
194
|
+
def contain_bundles
|
195
|
+
consumers = [code_spec, *code_spec.recursive_subspecs].flat_map do |spec|
|
196
|
+
spec.consumer(:ios)
|
197
|
+
end
|
198
|
+
for consumer in consumers
|
199
|
+
if consumer.resource_bundles.any?
|
200
|
+
return true
|
201
|
+
end
|
202
|
+
end
|
203
|
+
return false
|
204
|
+
end
|
205
|
+
|
192
206
|
def expand_suffix(suffix)
|
193
207
|
if suffix.end_with?('.storyboard') ||
|
194
208
|
suffix.end_with?('.xib') ||
|
@@ -204,12 +218,15 @@ module CBin
|
|
204
218
|
{ http: format(CBin.config.binary_download_url, code_spec.root.name, code_spec.version), type: CBin.config.download_file_type }
|
205
219
|
end
|
206
220
|
|
207
|
-
def
|
208
|
-
code_spec.
|
221
|
+
def code_spec_resource
|
222
|
+
resources = [code_spec, *code_spec.recursive_subspecs].flat_map do |spec|
|
223
|
+
spec.consumer(:ios).resources
|
224
|
+
end.compact.uniq
|
225
|
+
resources
|
209
226
|
end
|
210
227
|
|
211
228
|
def framework_contents(name)
|
212
|
-
["#{code_spec.root.name}.
|
229
|
+
["#{code_spec.root.name}.xcframework"].map { |path| "#{path}/#{name}" }
|
213
230
|
end
|
214
231
|
|
215
232
|
def binary_source_files
|
@@ -8,6 +8,7 @@ require 'cocoapods/generate'
|
|
8
8
|
require 'cocoapods-tdf-bin/helpers/framework_builder'
|
9
9
|
require 'cocoapods-tdf-bin/helpers/library_builder'
|
10
10
|
require 'cocoapods-tdf-bin/helpers/sources_helper'
|
11
|
+
require 'cocoapods-tdf-bin/helpers/spec_source_creator'
|
11
12
|
require 'cocoapods-tdf-bin/command/bin/spec/push'
|
12
13
|
|
13
14
|
module CBin
|
@@ -47,7 +48,7 @@ module CBin
|
|
47
48
|
# curl http://ci.xxx:9192/frameworks -F "name=IMYFoundation" -F "version=7.7.4.2" -F "annotate=IMYFoundation_7.7.4.2_log" -F "file=@bin-zip/bin_IMYFoundation_7.7.4.2.zip"
|
48
49
|
def curl_framework
|
49
50
|
|
50
|
-
zip_file = "#{CBin::Config::Builder.instance.zip_dir}/#{@spec.name}.
|
51
|
+
zip_file = "#{CBin::Config::Builder.instance.zip_dir}/#{@spec.name}.xcframework.zip"
|
51
52
|
res = File.exist?(zip_file)
|
52
53
|
if res
|
53
54
|
command = "curl #{CBin.config.bin_upload_url} -F \"frameworkName=#{@spec.name}\" -F \"version=#{@spec.version}\" -F \"changelog=#{@spec.name}_#{@spec.version}_log\" -F \"framework=@#{zip_file}\""
|
@@ -119,8 +119,14 @@ module Pod
|
|
119
119
|
sources_manager = Config.instance.sources_manager
|
120
120
|
use_source_pods = podfile.use_source_pods
|
121
121
|
|
122
|
+
# 所有库的个数
|
123
|
+
all_spec_count = 0
|
124
|
+
|
122
125
|
missing_binary_specs = []
|
123
126
|
specs_by_target.each do |target, rspecs|
|
127
|
+
|
128
|
+
all_spec_count = all_spec_count + rspecs.count
|
129
|
+
|
124
130
|
# use_binaries 并且 use_source_pods 不包含 本地可过滤
|
125
131
|
use_binary_rspecs = if podfile.use_binaries? || podfile.use_binaries_selector
|
126
132
|
rspecs.select do |rspec|
|
@@ -222,7 +228,7 @@ module Pod
|
|
222
228
|
end
|
223
229
|
next if spec_git_res
|
224
230
|
|
225
|
-
|
231
|
+
# 获取没有制作二进制版本的spec集合
|
226
232
|
sources_sepc << spec
|
227
233
|
unless spec.defined_in_file.nil?
|
228
234
|
FileUtils.cp("#{spec.defined_in_file}", "#{des_dir}")
|
@@ -230,6 +236,10 @@ module Pod
|
|
230
236
|
end
|
231
237
|
end
|
232
238
|
|
239
|
+
# 二进制库的个数
|
240
|
+
bin_spec_count = all_spec_count - sources_sepc.count
|
241
|
+
UI.message "组件二进制化比例 #{bin_spec_count}/#{all_spec_count}"
|
242
|
+
|
233
243
|
specs_by_target
|
234
244
|
end
|
235
245
|
end
|
@@ -13,28 +13,70 @@ module Pod
|
|
13
13
|
#
|
14
14
|
# Perform analysis for a given spec (or subspec)
|
15
15
|
#
|
16
|
-
def perform_extensive_analysis(spec)
|
17
|
-
|
18
|
-
end
|
16
|
+
# def perform_extensive_analysis(spec)
|
17
|
+
# return true
|
18
|
+
# end
|
19
19
|
|
20
20
|
#覆盖
|
21
|
-
def check_file_patterns
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
21
|
+
# def check_file_patterns
|
22
|
+
# FILE_PATTERNS.each do |attr_name|
|
23
|
+
# next if %i(source_files resources).include? attr_name
|
24
|
+
# if respond_to?("_validate_#{attr_name}", true)
|
25
|
+
# send("_validate_#{attr_name}")
|
26
|
+
# else
|
27
|
+
# validate_nonempty_patterns(attr_name, :error)
|
28
|
+
# end
|
29
|
+
# end
|
30
|
+
#
|
31
|
+
# _validate_header_mappings_dir
|
32
|
+
# if consumer.spec.root?
|
33
|
+
# _validate_license
|
34
|
+
# _validate_module_map
|
35
|
+
# end
|
36
|
+
# end
|
37
|
+
|
38
|
+
# def validate_source_url(spec); end
|
39
|
+
|
40
|
+
# 修改 验证 build 时的 ARCHS 配置
|
41
|
+
def xcodebuild(action, scheme, configuration, deployment_target:)
|
42
|
+
require 'fourflusher'
|
43
|
+
command = %W(clean #{action} -workspace #{File.join(validation_dir, 'App.xcworkspace')} -scheme #{scheme} -configuration #{configuration})
|
44
|
+
case consumer.platform_name
|
45
|
+
when :osx, :macos
|
46
|
+
command += %w(CODE_SIGN_IDENTITY=)
|
47
|
+
when :ios
|
48
|
+
command += %w(CODE_SIGN_IDENTITY=- -sdk iphonesimulator)
|
49
|
+
command += Fourflusher::SimControl.new.destination(:oldest, 'iOS', deployment_target)
|
50
|
+
command += %w(ARCHS=x86_64)
|
51
|
+
xcconfig = consumer.pod_target_xcconfig
|
52
|
+
if xcconfig
|
53
|
+
archs = xcconfig['VALID_ARCHS']
|
54
|
+
if archs && (archs.include? 'armv7') && !(archs.include? 'i386') && (archs.include? 'x86_64')
|
55
|
+
# Prevent Xcodebuild from testing the non-existent i386 simulator if armv7 is specified without i386
|
56
|
+
command += %w(ARCHS=x86_64)
|
28
57
|
end
|
58
|
+
end
|
59
|
+
when :watchos
|
60
|
+
command += %w(CODE_SIGN_IDENTITY=- -sdk watchsimulator)
|
61
|
+
command += Fourflusher::SimControl.new.destination(:oldest, 'watchOS', deployment_target)
|
62
|
+
when :tvos
|
63
|
+
command += %w(CODE_SIGN_IDENTITY=- -sdk appletvsimulator)
|
64
|
+
command += Fourflusher::SimControl.new.destination(:oldest, 'tvOS', deployment_target)
|
65
|
+
end
|
66
|
+
|
67
|
+
if analyze
|
68
|
+
command += %w(CLANG_ANALYZER_OUTPUT=html CLANG_ANALYZER_OUTPUT_DIR=analyzer)
|
29
69
|
end
|
30
70
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
71
|
+
begin
|
72
|
+
_xcodebuild(command, true)
|
73
|
+
rescue => e
|
74
|
+
message = 'Returned an unsuccessful exit code.'
|
75
|
+
message += ' You can use `--verbose` for more information.' unless config.verbose?
|
76
|
+
error('xcodebuild', message)
|
77
|
+
e.message
|
35
78
|
end
|
36
79
|
end
|
37
80
|
|
38
|
-
def validate_source_url(spec); end
|
39
81
|
end
|
40
82
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cocoapods-tdf-bin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.28
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- gaijiaofan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-03-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: parallel
|