pindo 5.4.1 → 5.5.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.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/client/aws3sclient.rb +2 -2
  3. data/lib/pindo/client/httpclient.rb +1 -2
  4. data/lib/pindo/command/android/autobuild.rb +40 -18
  5. data/lib/pindo/command/android/build.rb +37 -16
  6. data/lib/pindo/command/android/debug.rb +34 -20
  7. data/lib/pindo/command/appstore/iap.rb +15 -1
  8. data/lib/pindo/command/appstore/itcapp.rb +15 -1
  9. data/lib/pindo/command/appstore/metadata.rb +15 -1
  10. data/lib/pindo/command/appstore/screenshots.rb +15 -1
  11. data/lib/pindo/command/appstore/upload.rb +15 -1
  12. data/lib/pindo/command/deploy/build.rb +35 -20
  13. data/lib/pindo/command/deploy/bundleid.rb +15 -1
  14. data/lib/pindo/command/deploy/cert.rb +19 -2
  15. data/lib/pindo/command/deploy/check.rb +15 -1
  16. data/lib/pindo/command/deploy/configproj.rb +15 -1
  17. data/lib/pindo/command/deploy/confusecode.rb +15 -1
  18. data/lib/pindo/command/deploy/confuseproj.rb +11 -1
  19. data/lib/pindo/command/deploy/fabric.rb +10 -1
  20. data/lib/pindo/command/deploy/getitcinfo.rb +11 -1
  21. data/lib/pindo/command/deploy/iap.rb +12 -1
  22. data/lib/pindo/command/deploy/initconfig.rb +11 -1
  23. data/lib/pindo/command/deploy/itcinfo.rb +12 -1
  24. data/lib/pindo/command/deploy/pullconfig.rb +11 -1
  25. data/lib/pindo/command/deploy/pushconfig.rb +11 -1
  26. data/lib/pindo/command/deploy/quswark.rb +12 -1
  27. data/lib/pindo/command/deploy/quswauth.rb +10 -1
  28. data/lib/pindo/command/deploy/reportbug.rb +11 -1
  29. data/lib/pindo/command/deploy/resign.rb +12 -1
  30. data/lib/pindo/command/deploy/updateconfig.rb +11 -1
  31. data/lib/pindo/command/deploy/uploadipa.rb +11 -1
  32. data/lib/pindo/command/env/dreamstudio.rb +13 -1
  33. data/lib/pindo/command/env/quarkenv.rb +13 -1
  34. data/lib/pindo/command/env/swarkenv.rb +13 -1
  35. data/lib/pindo/command/env/workhard.rb +13 -1
  36. data/lib/pindo/command/gplay/iap.rb +21 -5
  37. data/lib/pindo/command/gplay/itcapp.rb +19 -5
  38. data/lib/pindo/command/gplay/metadata.rb +23 -5
  39. data/lib/pindo/command/gplay/screenshots.rb +23 -5
  40. data/lib/pindo/command/gplay/upload.rb +21 -5
  41. data/lib/pindo/command/gplay.rb +8 -8
  42. data/lib/pindo/command/ios/adhoc.rb +18 -3
  43. data/lib/pindo/command/ios/autobuild.rb +22 -7
  44. data/lib/pindo/command/ios/autoresign.rb +18 -3
  45. data/lib/pindo/command/ios/build.rb +18 -4
  46. data/lib/pindo/command/ipa/autoresign.rb +35 -4
  47. data/lib/pindo/command/ipa/import.rb +19 -1
  48. data/lib/pindo/command/ipa/output.rb +39 -4
  49. data/lib/pindo/command/{pgyer → jps}/apptest.rb +35 -24
  50. data/lib/pindo/command/jps/bind.rb +191 -0
  51. data/lib/pindo/command/{pgyer → jps}/comment.rb +19 -19
  52. data/lib/pindo/command/{pgyer → jps}/download.rb +20 -20
  53. data/lib/pindo/command/{pgyer → jps}/login.rb +9 -9
  54. data/lib/pindo/command/{pgyer → jps}/resign.rb +40 -25
  55. data/lib/pindo/command/{pgyer → jps}/upload.rb +60 -43
  56. data/lib/pindo/command/jps.rb +18 -0
  57. data/lib/pindo/command/lib/forcepush.rb +15 -1
  58. data/lib/pindo/command/lib/push.rb +15 -1
  59. data/lib/pindo/command/lib/update.rb +15 -1
  60. data/lib/pindo/command/repo/clone.rb +11 -1
  61. data/lib/pindo/command/repo/create.rb +13 -1
  62. data/lib/pindo/command/repo/login.rb +14 -3
  63. data/lib/pindo/command/repo/search.rb +14 -2
  64. data/lib/pindo/command/unity/apk.rb +14 -28
  65. data/lib/pindo/command/unity/autobuild.rb +13 -13
  66. data/lib/pindo/command/unity/ipa.rb +15 -29
  67. data/lib/pindo/command/unity/web.rb +15 -15
  68. data/lib/pindo/command/utils/boss.rb +19 -2
  69. data/lib/pindo/command/utils/clearcert.rb +18 -2
  70. data/lib/pindo/command/utils/device.rb +19 -2
  71. data/lib/pindo/command/utils/icon.rb +20 -2
  72. data/lib/pindo/command/utils/renewcert.rb +28 -3
  73. data/lib/pindo/command/utils/renewproj.rb +25 -2
  74. data/lib/pindo/command/utils/tgate.rb +28 -3
  75. data/lib/pindo/command/utils/xcassets.rb +20 -2
  76. data/lib/pindo/command/web/autobuild.rb +18 -3
  77. data/lib/pindo/command.rb +1 -1
  78. data/lib/pindo/module/pgyer/pgyerhelper.rb +185 -85
  79. data/lib/pindo/version.rb +1 -1
  80. metadata +30 -12
  81. data/lib/pindo/client/pgyer_feishu_oauth_cli.rb +0 -669
  82. data/lib/pindo/client/pgyerclient.rb +0 -466
  83. data/lib/pindo/client/pgyeruploadclient.rb +0 -517
  84. data/lib/pindo/command/pgyer.rb +0 -18
@@ -1,466 +0,0 @@
1
- require 'uri'
2
- require 'pindo/base/aeshelper'
3
- require 'pindo/config/pindouserlocalconfig'
4
- require 'pindo/client/httpclient'
5
- require 'pindo/client/pgyer_feishu_oauth_cli'
6
-
7
- module Pindo
8
-
9
-
10
- class PgyerClient
11
-
12
-
13
- attr_accessor :use_local_wechat_url
14
- attr_accessor :token
15
- attr_accessor :baseurl
16
- attr_accessor :request_config
17
-
18
- def initialize()
19
-
20
- begin
21
-
22
- @pgyer_token_file = File.join(File::expand_path(Pindoconfig.instance.pindo_dir), ".pgyer_token")
23
- config_file = File.join(File::expand_path(Pindoconfig.instance.pindo_common_configdir), "pgyer_client_config.json")
24
- config_json = JSON.parse(File.read(config_file))
25
-
26
- @use_local_wechat_url = config_json["use_local_wechat_url"]
27
- @baseurl = config_json["pgyerapps_base_url"]
28
- @request_config = config_json["pgyerapps_req_config"]
29
- @pgyer_aes_key = config_json["pgyerapps_aes_key"]
30
-
31
- rescue => error
32
- raise Informative, "加载pgyer配置文件失败, 需要执行 pindo setup 或者pindo env dreamstudio"
33
- end
34
-
35
- end
36
-
37
- def do_login(force_login:false)
38
-
39
- login_success = false
40
- need_req_login = true
41
-
42
- if force_login
43
- need_req_login = true
44
- else
45
- @token = load_token()
46
- if !@token.nil? && !@token["token"].nil? && !@token["username"].nil?
47
- # 检查token是否已过期(超过7天)
48
- if @token["expires_at"] && Time.now.to_i < @token["expires_at"]
49
- need_req_login = false
50
- else
51
- # 令牌过期,需要重新登录,但不显示错误消息
52
- need_req_login = true
53
- end
54
- else
55
- need_req_login = true
56
- end
57
- end
58
- if need_req_login
59
- login_handle = PgyerFeishuOAuthCLI.new("cli_a7db8213883ed00d")
60
- result = login_handle.authorize
61
-
62
- # 处理用户取消的情况
63
- if result == :user_cancelled
64
- Funlog.instance.fancyinfo_error("用户取消了登录操作")
65
- login_success = false
66
- elsif result == true && login_handle.access_token
67
- @token = {}
68
- @token["token"] = login_handle.access_token
69
- @token["username"] = login_handle.username
70
- @token["expires_at"] = login_handle.expires_at
71
- store_token(token:@token)
72
- login_success = true
73
- else
74
- Funlog.instance.fancyinfo_error("登录失败,未能获取有效token")
75
- login_success = false
76
- end
77
- else
78
- login_success = true
79
- end
80
-
81
- return login_success
82
- end
83
-
84
-
85
- def load_token()
86
-
87
- @token = nil
88
- # 静默读取token,不显示过程
89
- if File.exist?(@pgyer_token_file)
90
- begin
91
- data = File.read(@pgyer_token_file)
92
-
93
- data_string = AESHelper::aes_128_ecb_decrypt(@pgyer_aes_key, data)
94
- temp_token = data_string
95
- temp_token = JSON.parse(data_string)
96
- if !temp_token.nil? && !temp_token["token"].nil? && !temp_token["username"].nil?
97
- # 检查token是否已过期
98
- if temp_token["expires_at"] && Time.now.to_i > temp_token["expires_at"]
99
- # 过期时静默处理,将在登录时提示
100
- return nil
101
- end
102
-
103
- @token = temp_token
104
- # 成功读取时不显示,保持界面清洁
105
- end
106
- rescue => error
107
- # 静默处理错误
108
- if File.exist?(@pgyer_token_file)
109
- FileUtils.rm_rf(@pgyer_token_file)
110
- end
111
- @token = nil
112
- end
113
- else
114
- # token文件不存在时静默处理,将在需要时自动登录
115
- @token = nil
116
- end
117
- # puts "token: #{@token}"
118
- return @token
119
- end
120
-
121
- def store_token(token:nil)
122
-
123
- begin
124
- @token = token
125
-
126
- data_string = AESHelper::aes_128_ecb_encrypt(@pgyer_aes_key, @token.to_json)
127
- File.open(@pgyer_token_file, "w") do |f|
128
- f.write(data_string)
129
- end
130
- # 静默存储,不显示消息
131
- # Funlog.instance.fancyinfo_success("token 存储成功!")
132
- rescue => error
133
- # 存储失败时静默处理,避免干扰用户
134
- # Funlog.instance.fancyinfo_error("token存储失败!")
135
- end
136
- end
137
-
138
- def do_send_code(username:nil)
139
-
140
-
141
- boss_url = @baseurl + @request_config["do_send_code"]
142
-
143
- body_params = {
144
- username:username
145
- }
146
- # puts JSON.pretty_generate(body_params)
147
-
148
- con = HttpClient.create_instance_with_proxy
149
- res = con.post do |req|
150
- req.url boss_url
151
- req.headers['Content-Type'] = 'application/json'
152
- req.body = body_params.to_json
153
- end
154
-
155
- result_date = nil
156
- if !res.body.nil?
157
- result_date = JSON.parse(res.body)
158
- end
159
-
160
- # puts JSON.pretty_generate(result_date)
161
-
162
- if !result_date.nil? && !result_date["code"].nil? && result_date["code"].to_s.eql?("200")
163
-
164
-
165
- res = con.post do |req|
166
- req.url boss_url
167
- req.headers['Content-Type'] = 'application/json'
168
- req.body = body_params.to_json
169
- end
170
-
171
- if !res.body.nil?
172
- result_date = JSON.parse(res.body)
173
- end
174
-
175
- end
176
-
177
-
178
- # puts JSON.pretty_generate(result_date)
179
-
180
- return result_date
181
-
182
- end
183
-
184
-
185
-
186
- def get_app_list_req(params:nil)
187
-
188
-
189
- boss_url = @baseurl + @request_config["get_app_list"]
190
-
191
- # puts boss_url
192
- get_params = {
193
- orderByColumn:"app_name",
194
- sort:"ASC",
195
- pageNo:1,
196
- pageSize:1000,
197
- }
198
-
199
- params.each { |key,value| get_params[key] = value }
200
-
201
-
202
- con = HttpClient.create_instance_with_proxy
203
- res = con.get do |req|
204
- req.url boss_url
205
- req.headers['Content-Type'] = 'application/json'
206
- req.headers['token'] = @token["token"]
207
- req.params = get_params
208
- end
209
-
210
- result_date = nil
211
- if !res.body.nil?
212
- result_date = JSON.parse(res.body)
213
-
214
- if !result_date["code"].nil? && result_date["code"].to_s.eql?("401")
215
- do_login(force_login:true)
216
- end
217
- end
218
-
219
-
220
- # puts JSON.pretty_generate(result_date)
221
-
222
- return result_date
223
-
224
- end
225
-
226
- def update_app_info_req(params:nil)
227
-
228
- boss_url = @baseurl + @request_config["update_app_info"]
229
- # puts boss_url
230
- body_params = {
231
-
232
- }
233
-
234
- if params.nil?
235
- return
236
- end
237
- params.each { |key,value| body_params[key] = value }
238
-
239
-
240
- con = HttpClient.create_instance_with_proxy
241
- res = con.post do |req|
242
- req.url boss_url
243
- req.headers['Content-Type'] = 'application/json'
244
- req.headers['token'] = @token["token"]
245
- req.body = body_params.to_json
246
- end
247
- # puts JSON.pretty_generate(body_params)
248
-
249
- result_date = nil
250
- if !res.body.nil?
251
- result_date = JSON.parse(res.body)
252
- end
253
-
254
-
255
- # puts JSON.pretty_generate(result_date)
256
-
257
- return result_date
258
-
259
- end
260
-
261
-
262
-
263
- # def post_app_update_binary(appId:nil, key_id:nil, description:nil)
264
- def post_app_update_binary(appId:nil, params:nil)
265
-
266
-
267
- boss_url = @baseurl + @request_config["upload_app_binary"]
268
-
269
- # puts boss_url
270
- body_params = {
271
- appId:appId,
272
- description:"",
273
- s3Url:"",
274
- attachFileUrls:[],
275
- }
276
-
277
- # puts body_params.to_json
278
- #
279
-
280
- params.each { |key,value| body_params[key] = value }
281
- # puts body_params.to_json
282
-
283
- # puts JSON.pretty_generate(body_params)
284
- # puts "111"
285
- con = HttpClient.create_instance_with_proxy
286
- res = con.post do |req|
287
- req.url boss_url
288
- req.headers['Content-Type'] = 'application/json'
289
- req.headers['token'] = @token["token"]
290
- req.body = body_params.to_json
291
- end
292
-
293
-
294
- result_date = nil
295
- if !res.body.nil?
296
- result_date = JSON.parse(res.body)
297
- end
298
-
299
-
300
- # puts JSON.pretty_generate(result_date)
301
-
302
- return result_date
303
-
304
- end
305
-
306
- def get_app_version_list_req(appId:nil, params:nil)
307
-
308
- params = {} if params.nil?
309
- boss_url = @baseurl + @request_config["get_app_version_list"]
310
-
311
- get_params = {
312
- appId:appId,
313
- pageNo:1,
314
- pageSize:20,
315
- }
316
-
317
- params.each { |key,value| get_params[key] = value }
318
-
319
-
320
- con = HttpClient.create_instance_with_proxy
321
- res = con.get do |req|
322
- req.url boss_url
323
- req.headers['Content-Type'] = 'application/json'
324
- req.headers['token'] = @token["token"]
325
- req.params = get_params
326
- end
327
-
328
- result_date = nil
329
- if !res.body.nil?
330
- result_date = JSON.parse(res.body)
331
- end
332
-
333
-
334
- # puts JSON.pretty_generate(result_date)
335
-
336
- return result_date
337
-
338
- end
339
-
340
-
341
- def post_update_upload_comment(appId:nil, id:nil, comment:nil)
342
-
343
-
344
- boss_url = @baseurl + @request_config["update_upload_comment"]
345
-
346
- # puts boss_url
347
- body_params = {
348
- appId:appId,
349
- id:id,
350
- description:comment || ""
351
- }
352
-
353
-
354
- con = HttpClient.create_instance_with_proxy
355
-
356
- res = con.post do |req|
357
- req.url boss_url
358
- req.headers['Content-Type'] = 'application/json'
359
- req.headers['token'] = @token["token"]
360
- req.body = body_params.to_json
361
- end
362
-
363
-
364
- result_date = nil
365
- if !res.body.nil?
366
- result_date = JSON.parse(res.body)
367
- end
368
-
369
-
370
- # puts JSON.pretty_generate(result_date)
371
-
372
- return result_date
373
-
374
- end
375
-
376
- def get_cert_list( )
377
-
378
- params = {} if params.nil?
379
- boss_url = @baseurl + @request_config["get_cert_list"]
380
-
381
- con = HttpClient.create_instance_with_proxy
382
- res = con.get do |req|
383
- req.url boss_url
384
- req.headers['Content-Type'] = 'application/json'
385
- req.headers['token'] = @token["token"]
386
- end
387
-
388
- result_date = nil
389
- if !res.body.nil?
390
- result_date = JSON.parse(res.body)
391
- end
392
-
393
-
394
- # puts JSON.pretty_generate(result_date)
395
-
396
- return result_date
397
-
398
- end
399
-
400
- def post_resign(appVersionId:nil, certId:nil)
401
-
402
- boss_url = @baseurl + @request_config["post_resign"]
403
-
404
- body_params = {
405
- appVersionId:appVersionId,
406
- certId:certId
407
- }
408
-
409
-
410
- con = HttpClient.create_instance_with_proxy
411
-
412
- res = con.post do |req|
413
- req.url boss_url
414
- req.headers['Content-Type'] = 'application/json'
415
- req.headers['token'] = @token["token"]
416
- req.body = body_params.to_json
417
- end
418
-
419
-
420
- result_date = nil
421
- if !res.body.nil?
422
- result_date = JSON.parse(res.body)
423
- end
424
-
425
-
426
- # puts JSON.pretty_generate(result_date)
427
-
428
- return result_date
429
-
430
- end
431
-
432
- def post_message(appId:nil, appVersionId:nil, chatEnv: nil, receiveType:nil)
433
-
434
- boss_url = @baseurl + @request_config["send_lark_message"]
435
-
436
- body_params = {
437
- appId:appId,
438
- appVersionId:appVersionId,
439
- chatEnv:chatEnv,
440
- receiveType:receiveType
441
- }
442
-
443
-
444
- con = HttpClient.create_instance_with_proxy
445
-
446
- res = con.post do |req|
447
- req.url boss_url
448
- req.headers['Content-Type'] = 'application/json'
449
- req.headers['token'] = @token["token"]
450
- req.body = body_params.to_json
451
- end
452
-
453
-
454
- result_date = nil
455
- if !res.body.nil?
456
- result_date = JSON.parse(res.body)
457
- end
458
-
459
- puts JSON.pretty_generate(result_date)
460
-
461
- return result_date
462
-
463
- end
464
-
465
- end
466
- end