fast_pack 0.3.1 → 0.3.4
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-uki-packager/command/pack.rb +5 -1
- data/lib/cocoapods-uki-packager/shell.rb +200 -24
- data/lib/cocoapods-uki-packager/uki_config.rb +39 -16
- data/lib/cocoapods-uki-packager/version.rb +1 -1
- data/lib/packager.rb +12 -0
- 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: 56b76321cbc99b6332e24ff16d35aa00200a23bccea0288640e97929c9bc4733
|
4
|
+
data.tar.gz: 990894a1d13a216970560cef95f4c240552d25b7ed3bf270f3b252862512f915
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6c15ba3e8418a94201d88bd419e406531e1ff5d8c9df4c7baf7f8472ff6f486df13ecfdf8145ebbb0f86f82a70711cec11c743ef5fa92088ca92cad037b59d9
|
7
|
+
data.tar.gz: b068e5065c2122006903ebbd0f427e020f30fa6552bf4a30b7398bba5f222450194edf1145b16654ac694164c7570d19888bc2115d5b81ea031b678814f5eaea
|
@@ -41,11 +41,15 @@ module Pod
|
|
41
41
|
uki_config.dsym = @dsym
|
42
42
|
uki_config.release = @release
|
43
43
|
uki_config.no_build = @no_build
|
44
|
+
uki_config.build_time = Time.now.to_i
|
45
|
+
uki_config.upload_time = 0
|
44
46
|
|
45
47
|
end
|
46
48
|
|
47
49
|
def run
|
48
50
|
if verify_workspace_exists?
|
51
|
+
shell.export_xcode_env
|
52
|
+
|
49
53
|
if uki_config.no_build
|
50
54
|
#直接导出
|
51
55
|
shell.export
|
@@ -62,7 +66,7 @@ module Pod
|
|
62
66
|
uki_config.auto_work_space_name
|
63
67
|
unless uki_config.workspace_name
|
64
68
|
puts("大兄弟,请前往xxxx.workspace同级目录执行哦")
|
65
|
-
|
69
|
+
exit
|
66
70
|
end
|
67
71
|
|
68
72
|
return true
|
@@ -1,33 +1,70 @@
|
|
1
1
|
require 'cocoapods-uki-packager/uki_config.rb'
|
2
2
|
require 'cocoapods'
|
3
|
+
require 'net/https'
|
4
|
+
require 'uri'
|
5
|
+
require 'json'
|
6
|
+
require 'socket'
|
7
|
+
|
3
8
|
|
4
9
|
class Shell_Command
|
5
10
|
|
6
11
|
include Uki_config::Mixin
|
7
12
|
|
8
|
-
def
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
+
def export_xcode_env
|
14
|
+
puts("********************************************************* 开始导出Xcode环境变量")
|
15
|
+
|
16
|
+
log = %x{
|
17
|
+
rootPath=`pwd`
|
18
|
+
fireName="xcode_env.json"
|
19
|
+
full_path="${rootPath}/${fireName}"
|
20
|
+
if [ -f "$full_path" ]
|
21
|
+
then
|
22
|
+
echo "存在xcode_env.json"
|
23
|
+
else
|
24
|
+
echo "不存在xcode_env.json 创建一个"
|
25
|
+
touch ${full_path}
|
26
|
+
fi
|
27
|
+
|
28
|
+
if [ -f "$full_path" ]
|
29
|
+
then
|
30
|
+
echo `xcodebuild -showBuildSettings -json` > "$full_path"
|
31
|
+
fi
|
32
|
+
}
|
33
|
+
|
34
|
+
if !File.exist?(uki_config.xcode_env_path)
|
35
|
+
puts("当前目录未查找到xcode_env.json文件, 请检查执行目录")
|
36
|
+
exit
|
37
|
+
end
|
38
|
+
|
39
|
+
json_from_file = File.read(uki_config.xcode_env_path)
|
40
|
+
uki_config.xcode_envs = JSON.parse(json_from_file).first
|
41
|
+
|
42
|
+
if uki_config.verbose?
|
43
|
+
puts(log)
|
44
|
+
end
|
13
45
|
|
14
|
-
|
46
|
+
end
|
15
47
|
|
16
|
-
|
17
|
-
echo "************************************* 编译失败 *************************************"
|
18
|
-
exit 1
|
19
|
-
fi
|
20
|
-
}
|
48
|
+
def build
|
21
49
|
|
22
|
-
puts
|
50
|
+
puts("********************************************************* 开始编译")
|
23
51
|
|
24
52
|
if uki_config.verbose?
|
25
|
-
|
53
|
+
puts("xcodebuild build -workspace #{uki_config.workspace} -scheme #{uki_config.scheme} -destination generic/platform=iOS -configuration #{uki_config.configuration} DEBUG_INFORMATION_FORMAT=#{uki_config.dsym_config} DWARF_DSYM_FOLDER_PATH=#{uki_config.dsym_path}")
|
26
54
|
end
|
55
|
+
|
56
|
+
log = %x{
|
57
|
+
xcodebuild build -workspace #{uki_config.workspace} -scheme #{uki_config.scheme} -destination generic/platform=iOS -configuration #{uki_config.configuration} DEBUG_INFORMATION_FORMAT=#{uki_config.dsym_config} DWARF_DSYM_FOLDER_PATH=#{uki_config.dsym_path}
|
58
|
+
}
|
27
59
|
|
28
|
-
|
29
|
-
|
30
|
-
|
60
|
+
if log[/BUILD SUCCEEDED/]
|
61
|
+
puts("********************************************************* 编译完成")
|
62
|
+
# 直接开始导出
|
63
|
+
self.export
|
64
|
+
elsif
|
65
|
+
puts("********************************************************* 失败")
|
66
|
+
exit
|
67
|
+
end
|
31
68
|
end
|
32
69
|
|
33
70
|
# 暂时先不copy到跟目录, 防止Git提交代码时提交上去
|
@@ -37,7 +74,7 @@ class Shell_Command
|
|
37
74
|
|
38
75
|
unless uki_config.build_exe_path
|
39
76
|
puts "未生成目标文件目录"
|
40
|
-
|
77
|
+
exit
|
41
78
|
end
|
42
79
|
|
43
80
|
puts %x{echo "********************************************************* 开始导出ipa"}
|
@@ -55,9 +92,6 @@ class Shell_Command
|
|
55
92
|
|
56
93
|
fir_log="fir auto release"
|
57
94
|
|
58
|
-
#计时
|
59
|
-
SECONDS=0
|
60
|
-
|
61
95
|
APP=$(find $product_path -type d | grep ".app$" | head -n 1)
|
62
96
|
APP=${APP%.*}
|
63
97
|
|
@@ -70,29 +104,171 @@ class Shell_Command
|
|
70
104
|
zip -r -q "$APP.ipa" ./Payload;
|
71
105
|
rm -rf ./Payload;
|
72
106
|
|
73
|
-
echo "===生成ipa开始上传
|
107
|
+
# echo "===生成ipa开始上传 ==="
|
74
108
|
|
109
|
+
#计时
|
110
|
+
SECONDS=0
|
75
111
|
|
76
112
|
fir_token="207c7aad886da8009a73486d5154a7a6"
|
77
|
-
fir publish "$APP.ipa" -T $fir_token -c "$fir_log" -
|
113
|
+
fir publish "$APP.ipa" -T $fir_token -c "$fir_log" -R
|
78
114
|
|
79
115
|
size=$(ls -l $APP.ipa | awk '{ print $5 }')
|
80
116
|
|
81
117
|
sizeM=`echo "scale=2; ${size}/1024.0/1024" | bc`
|
82
118
|
#sizeM="$((${size}/1000.0))
|
83
|
-
|
119
|
+
|
120
|
+
echo -e "包体积=${sizeM}m\n"
|
84
121
|
|
85
122
|
notification="Did uploaded to fir caost time:${SECONDS}s"
|
86
|
-
echo "===$notification
|
123
|
+
echo "===$notification===%"
|
87
124
|
|
88
125
|
osascript -e 'display notification "size:'$sizeM'm\ncaost:'$SECONDS's" with title "Uploaded to fir!" sound name "default" '
|
126
|
+
|
127
|
+
echo "upload_time=${SECONDS}"
|
89
128
|
}
|
90
129
|
|
130
|
+
ipa_size = log[/包体积.*$/].split('=').last
|
131
|
+
|
132
|
+
url = log[/http:.*$/]
|
133
|
+
array = log.split('%')
|
134
|
+
uki_config.upload_time = array.last.split("=").last.to_i
|
135
|
+
uki_config.build_time = Time.now.to_i - uki_config.build_time - uki_config.upload_time
|
136
|
+
uki_config.fir_url = url
|
137
|
+
uki_config.ipa_size = ipa_size
|
138
|
+
|
139
|
+
unless !url.empty?
|
140
|
+
puts("导出失败")
|
141
|
+
exit
|
142
|
+
end
|
143
|
+
|
91
144
|
puts("恭喜打包完成")
|
92
145
|
|
93
146
|
if uki_config.verbose?
|
94
147
|
puts(log)
|
95
148
|
end
|
149
|
+
|
150
|
+
send_notifi
|
151
|
+
end
|
152
|
+
|
153
|
+
def send_notifi
|
154
|
+
|
155
|
+
branch = %x{
|
156
|
+
if branch=$(git symbolic-ref --short -q HEAD)
|
157
|
+
then
|
158
|
+
echo $branch
|
159
|
+
else
|
160
|
+
echo "未知分支"
|
161
|
+
fi
|
162
|
+
}
|
163
|
+
|
164
|
+
hostname = Socket.gethostname
|
165
|
+
project_name = uki_config.group_name
|
166
|
+
project_env = uki_config.release ? "Release": "Debug"
|
167
|
+
project_dsym = uki_config.dsym ? "已上传": "无符号表"
|
168
|
+
|
169
|
+
message = {
|
170
|
+
"msg_type": "interactive",
|
171
|
+
"card": {
|
172
|
+
"elements": [
|
173
|
+
{
|
174
|
+
"fields": [
|
175
|
+
{
|
176
|
+
"is_short": true,
|
177
|
+
"text": {
|
178
|
+
"content": "**打包分支**\n#{branch}",
|
179
|
+
"tag": "lark_md"
|
180
|
+
}
|
181
|
+
},
|
182
|
+
{
|
183
|
+
"is_short": true,
|
184
|
+
"text": {
|
185
|
+
"content": "**打包环境**\n#{project_env}",
|
186
|
+
"tag": "lark_md"
|
187
|
+
}
|
188
|
+
},
|
189
|
+
{
|
190
|
+
"is_short": true,
|
191
|
+
"text": {
|
192
|
+
"content": "**打包机器**\n#{hostname}",
|
193
|
+
"tag": "lark_md"
|
194
|
+
}
|
195
|
+
},
|
196
|
+
{
|
197
|
+
"is_short": true,
|
198
|
+
"text": {
|
199
|
+
"content": "**dsym**\n#{project_dsym}",
|
200
|
+
"tag": "lark_md"
|
201
|
+
}
|
202
|
+
},
|
203
|
+
{
|
204
|
+
"is_short": true,
|
205
|
+
"text": {
|
206
|
+
"content": "**App版本**\n#{uki_config.app_version}.#{uki_config.build_version}",
|
207
|
+
"tag": "lark_md"
|
208
|
+
}
|
209
|
+
},
|
210
|
+
{
|
211
|
+
"is_short": true,
|
212
|
+
"text": {
|
213
|
+
"content": "**包体积**\n#{uki_config.ipa_size}",
|
214
|
+
"tag": "lark_md"
|
215
|
+
}
|
216
|
+
},
|
217
|
+
{
|
218
|
+
"is_short": true,
|
219
|
+
"text": {
|
220
|
+
"content": "**编译耗时**\n#{uki_config.build_time}s",
|
221
|
+
"tag": "lark_md"
|
222
|
+
}
|
223
|
+
},
|
224
|
+
{
|
225
|
+
"is_short": true,
|
226
|
+
"text": {
|
227
|
+
"content": "**上传耗时**\n#{uki_config.upload_time}s",
|
228
|
+
"tag": "lark_md"
|
229
|
+
}
|
230
|
+
}
|
231
|
+
],
|
232
|
+
"tag": "div"
|
233
|
+
},
|
234
|
+
{
|
235
|
+
"tag": "hr"
|
236
|
+
},
|
237
|
+
{
|
238
|
+
"tag": "action",
|
239
|
+
"actions": [
|
240
|
+
{
|
241
|
+
"tag": "button",
|
242
|
+
"text": {
|
243
|
+
"tag": "lark_md",
|
244
|
+
"content": "点击下载"
|
245
|
+
},
|
246
|
+
"type": "default",
|
247
|
+
"url": "#{uki_config.fir_url}"
|
248
|
+
}
|
249
|
+
]
|
250
|
+
}
|
251
|
+
],
|
252
|
+
"header": {
|
253
|
+
"template": "green",
|
254
|
+
"title": {
|
255
|
+
"content": "#{project_name}",
|
256
|
+
"tag": "plain_text"
|
257
|
+
}
|
258
|
+
}
|
259
|
+
}
|
260
|
+
}
|
261
|
+
|
262
|
+
log = %x{
|
263
|
+
curl -X POST -H "Content-Type: application/json" -d '#{message.to_json}' "https://open.feishu.cn/open-apis/bot/v2/hook/68c47d38-fc65-4cc5-a386-885a1fbff11b"
|
264
|
+
}
|
265
|
+
|
266
|
+
if uki_config.verbose?
|
267
|
+
puts(log)
|
268
|
+
end
|
269
|
+
|
270
|
+
exit
|
271
|
+
|
96
272
|
end
|
97
273
|
|
98
274
|
def self.instance
|
@@ -4,8 +4,6 @@ class Uki_config
|
|
4
4
|
# scheme info
|
5
5
|
PROJECT_SCHEME = ['UkiOverseas', 'miaohong'].freeze
|
6
6
|
|
7
|
-
# workspace name
|
8
|
-
PROJECT_WORKSPACENAME = ['UkiOverseas.xcworkspace', 'miaohong.xcworkspace']
|
9
7
|
|
10
8
|
# 是否展示详细信息
|
11
9
|
attr_accessor :verbose
|
@@ -17,24 +15,27 @@ class Uki_config
|
|
17
15
|
attr_accessor :release
|
18
16
|
# 是否产生dsym
|
19
17
|
attr_accessor :dsym
|
20
|
-
|
21
|
-
|
18
|
+
# 自动workspace名称
|
19
|
+
attr_accessor :workspace_name
|
20
|
+
# 编译耗时
|
21
|
+
attr_accessor :build_time
|
22
|
+
# 上传耗时
|
23
|
+
attr_accessor :upload_time
|
24
|
+
# 上传Url
|
25
|
+
attr_accessor :fir_url
|
26
|
+
# xcode环境变量
|
27
|
+
attr_accessor :xcode_envs
|
28
|
+
# 包体积
|
29
|
+
attr_accessor :ipa_size
|
22
30
|
|
23
31
|
alias_method :verbose?, :verbose
|
24
32
|
|
25
33
|
def scheme
|
26
|
-
|
27
|
-
return PROJECT_SCHEME.last
|
28
|
-
end
|
29
|
-
return PROJECT_SCHEME.first
|
34
|
+
return self.xcode_envs["target"]
|
30
35
|
end
|
31
36
|
|
32
37
|
def workspace
|
33
|
-
|
34
|
-
return PROJECT_WORKSPACENAME.last
|
35
|
-
end
|
36
|
-
|
37
|
-
return PROJECT_WORKSPACENAME.first
|
38
|
+
return self.workspace_name
|
38
39
|
end
|
39
40
|
|
40
41
|
def configuration
|
@@ -83,22 +84,44 @@ class Uki_config
|
|
83
84
|
|
84
85
|
Dir.foreach(@installation_root) do |entry|
|
85
86
|
if entry.end_with?('xcworkspace')
|
86
|
-
@workspace_name = entry
|
87
|
+
@workspace_name = entry
|
87
88
|
next
|
88
89
|
end
|
89
90
|
end
|
90
91
|
end
|
91
92
|
|
93
|
+
def app_version
|
94
|
+
buildSettings = self.xcode_envs["buildSettings"]
|
95
|
+
return buildSettings["MARKETING_VERSION"]
|
96
|
+
end
|
97
|
+
|
98
|
+
def build_version
|
99
|
+
buildSettings = self.xcode_envs["buildSettings"]
|
100
|
+
return buildSettings["CURRENT_PROJECT_VERSION"]
|
101
|
+
end
|
102
|
+
|
92
103
|
# 读取产物记录文件
|
93
104
|
def app_file_path
|
94
105
|
return File.join(@installation_root, "app_path")
|
95
106
|
end
|
96
107
|
|
97
|
-
|
98
|
-
|
108
|
+
# 产物路径
|
109
|
+
def build_exe_path
|
99
110
|
return IO.readlines(app_file_path).first
|
100
111
|
end
|
101
112
|
|
113
|
+
def group_name
|
114
|
+
unless @workspace_name == "miaohong.xcworkspace"
|
115
|
+
return "iOS海外极速打包完成"
|
116
|
+
end
|
117
|
+
|
118
|
+
return "iOS国内极速打包完成"
|
119
|
+
end
|
120
|
+
|
121
|
+
def xcode_env_path
|
122
|
+
return File.join(@installation_root, "xcode_env.json")
|
123
|
+
end
|
124
|
+
|
102
125
|
def self.instance
|
103
126
|
@instance ||= new
|
104
127
|
end
|
data/lib/packager.rb
CHANGED
@@ -0,0 +1,12 @@
|
|
1
|
+
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
{"msg_type":"interactive","card":{"elements":[{"fields":[{"is_short":true,"text":{"content":"**打包分支**\nRelease","tag":"lark_md"}},{"is_short":true,"text":{"content":"**打包环境**\nDebug","tag":"lark_md"}},{"is_short":true,"text":{"content":"**打包机器**\nxx的Mac","tag":"lark_md"}},{"is_short":true,"text":{"content":"**dsym**\n无","tag":"lark_md"}},{"is_short":true,"text":{"content":"**编译耗时**\n12s","tag":"lark_md"}},{"is_short":true,"text":{"content":"**上传耗时**\n60s","tag":"lark_md"}}],"tag":"div"},{"tag":"hr"},{"tag":"action","actions":[{"tag":"button","text":{"tag":"lark_md","content":"点击下载"},"type":"default","url":"https://www.baidu.com/"}]}],"header":{"template":"green","title":{"content":"打包已完成","tag":"plain_text"}}}}
|
6
|
+
{:msg_type=>"interactive", :card=>{:elements=>[{:fields=>[{:is_short=>true, :text=>{:content=>"**打包分支**\nRelease", :tag=>"lark_md"}}, {:is_short=>true, :text=>{:content=>"**打包环境**\nDebug", :tag=>"lark_md"}}, {:is_short=>true, :text=>{:content=>"**打包机器**\nxx的Mac", :tag=>"lark_md"}}, {:is_short=>true, :text=>{:content=>"**dsym**\n无", :tag=>"lark_md"}}, {:is_short=>true, :text=>{:content=>"**编译耗时**\n12s", :tag=>"lark_md"}}, {:is_short=>true, :text=>{:content=>"**上传耗时**\n60s", :tag=>"lark_md"}}], :tag=>"div"}, {:tag=>"hr"}, {:tag=>"action", :actions=>[{:tag=>"button", :text=>{:tag=>"lark_md", :content=>"点击下载"}, :type=>"default", :url=>"https://www.baidu.com/"}]}], :header=>{:template=>"green", :title=>{:content=>"打包已完成", :tag=>"plain_text"}}}}
|
7
|
+
|
8
|
+
|
9
|
+
|
10
|
+
curl -X POST -H "Content-Type: application/json" \
|
11
|
+
-d '{"msg_type":"interactive","card":{"elements":[{"fields":[{"is_short":true,"text":{"content":"**打包分支**\nRelease","tag":"lark_md"}},{"is_short":true,"text":{"content":"**打包环境**\nDebug","tag":"lark_md"}},{"is_short":true,"text":{"content":"**打包机器**\nxx的Mac","tag":"lark_md"}},{"is_short":true,"text":{"content":"**dsym**\n无","tag":"lark_md"}},{"is_short":true,"text":{"content":"**编译耗时**\n12s","tag":"lark_md"}},{"is_short":true,"text":{"content":"**上传耗时**\n60s","tag":"lark_md"}}],"tag":"div"},{"tag":"hr"},{"tag":"action","actions":[{"tag":"button","text":{"tag":"lark_md","content":"点击下载"},"type":"default","url":"https://www.baidu.com/"}]}],"header":{"template":"green","title":{"content":"打包已完成","tag":"plain_text"}}}}' \
|
12
|
+
https://open.feishu.cn/open-apis/bot/v2/hook/be340a71-08b3-4541-8cc6-2f733dd6f257
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fast_pack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- 耿磊
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-08-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: cocoapods
|