pindo 4.6.9

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 (120) hide show
  1. checksums.yaml +7 -0
  2. data/bin/pindo +35 -0
  3. data/lib/pindo/base/aeshelper.rb +31 -0
  4. data/lib/pindo/base/deviceinfo.rb +90 -0
  5. data/lib/pindo/base/executable.rb +224 -0
  6. data/lib/pindo/base/githelper.rb +489 -0
  7. data/lib/pindo/base/hashhelper.rb +134 -0
  8. data/lib/pindo/base/plaininformative.rb +15 -0
  9. data/lib/pindo/base/plistbuddyexecutable.rb +121 -0
  10. data/lib/pindo/base/standarderror.rb +14 -0
  11. data/lib/pindo/client/applovinclient.rb +156 -0
  12. data/lib/pindo/client/aws3sclient.rb +183 -0
  13. data/lib/pindo/client/bossclient.rb +229 -0
  14. data/lib/pindo/client/bossconfigclient.rb +175 -0
  15. data/lib/pindo/client/giteeclient.rb +65 -0
  16. data/lib/pindo/client/httpclient.rb +40 -0
  17. data/lib/pindo/client/pgyerclient.rb +439 -0
  18. data/lib/pindo/client/tgateclient.rb +103 -0
  19. data/lib/pindo/command.rb +101 -0
  20. data/lib/pindo/config/pindoconfig.rb +439 -0
  21. data/lib/pindo/config/pindouserlocalconfig.rb +81 -0
  22. data/lib/pindo/deploy/Fastfile +233 -0
  23. data/lib/pindo/deploy/build.rb +167 -0
  24. data/lib/pindo/deploy/bundleid.rb +245 -0
  25. data/lib/pindo/deploy/cert.rb +508 -0
  26. data/lib/pindo/deploy/check.rb +79 -0
  27. data/lib/pindo/deploy/configproj.rb +89 -0
  28. data/lib/pindo/deploy/confusecode.rb +248 -0
  29. data/lib/pindo/deploy/confuseproj.rb +112 -0
  30. data/lib/pindo/deploy/fabric.rb +58 -0
  31. data/lib/pindo/deploy/getitcinfo.rb +248 -0
  32. data/lib/pindo/deploy/iap.rb +796 -0
  33. data/lib/pindo/deploy/initconfig.rb +128 -0
  34. data/lib/pindo/deploy/itcapp.rb +147 -0
  35. data/lib/pindo/deploy/itcinfo.rb +369 -0
  36. data/lib/pindo/deploy/pem.rb +55 -0
  37. data/lib/pindo/deploy/pullconfig.rb +46 -0
  38. data/lib/pindo/deploy/pushconfig.rb +83 -0
  39. data/lib/pindo/deploy/quswark.rb +146 -0
  40. data/lib/pindo/deploy/quswauth.rb +67 -0
  41. data/lib/pindo/deploy/reportbug.rb +135 -0
  42. data/lib/pindo/deploy/resign.rb +338 -0
  43. data/lib/pindo/deploy/tag.rb +108 -0
  44. data/lib/pindo/deploy/updateconfig.rb +129 -0
  45. data/lib/pindo/deploy/uploadipa.rb +63 -0
  46. data/lib/pindo/deploy.rb +44 -0
  47. data/lib/pindo/dev/autobuild.rb +204 -0
  48. data/lib/pindo/dev/autoresign.rb +186 -0
  49. data/lib/pindo/dev/confusecode.rb +127 -0
  50. data/lib/pindo/dev/confuseproj.rb +111 -0
  51. data/lib/pindo/dev/createbuild.rb +159 -0
  52. data/lib/pindo/dev/debug.rb +141 -0
  53. data/lib/pindo/dev/pub.rb +171 -0
  54. data/lib/pindo/dev/renewcert.rb +142 -0
  55. data/lib/pindo/dev.rb +23 -0
  56. data/lib/pindo/env/dreamstudio.rb +53 -0
  57. data/lib/pindo/env/flutter.rb +59 -0
  58. data/lib/pindo/env/flutter.sh +116 -0
  59. data/lib/pindo/env/quarkenv.rb +58 -0
  60. data/lib/pindo/env/swarkenv.rb +62 -0
  61. data/lib/pindo/env/workhard.rb +56 -0
  62. data/lib/pindo/env.rb +17 -0
  63. data/lib/pindo/ipa/autoresign.rb +188 -0
  64. data/lib/pindo/ipa/import.rb +261 -0
  65. data/lib/pindo/ipa/output.rb +396 -0
  66. data/lib/pindo/ipa.rb +22 -0
  67. data/lib/pindo/lib/forcepush.rb +159 -0
  68. data/lib/pindo/lib/lint.rb +115 -0
  69. data/lib/pindo/lib/push.rb +143 -0
  70. data/lib/pindo/lib/update.rb +75 -0
  71. data/lib/pindo/lib.rb +18 -0
  72. data/lib/pindo/module/appselect.rb +200 -0
  73. data/lib/pindo/module/appstore_in_app_purchase.rb +1803 -0
  74. data/lib/pindo/module/appstore_metadata_connect_api_helper.rb +12 -0
  75. data/lib/pindo/module/appstore_metadata_fastlane_helper.rb +922 -0
  76. data/lib/pindo/module/buildconfighelper.rb +13 -0
  77. data/lib/pindo/module/buildhelper.rb +76 -0
  78. data/lib/pindo/module/commonconfuseproj.rb +271 -0
  79. data/lib/pindo/module/config_project.sh +143 -0
  80. data/lib/pindo/module/configprojhelper.rb +631 -0
  81. data/lib/pindo/module/iap_tier.json +813 -0
  82. data/lib/pindo/module/icon_contents.json +116 -0
  83. data/lib/pindo/module/imessage_icon.json +91 -0
  84. data/lib/pindo/module/imgset_contents.json +21 -0
  85. data/lib/pindo/module/launchimg_contents.json +21 -0
  86. data/lib/pindo/module/pemcreate.rb +63 -0
  87. data/lib/pindo/module/pgyerhelper.rb +339 -0
  88. data/lib/pindo/module/xcodebuildpre.rb +258 -0
  89. data/lib/pindo/module/xcodehelper.rb +521 -0
  90. data/lib/pindo/options/appconfigoptions.rb +23 -0
  91. data/lib/pindo/options/deployoptions.rb +363 -0
  92. data/lib/pindo/pgyer/apptest.rb +104 -0
  93. data/lib/pindo/pgyer/comment.rb +95 -0
  94. data/lib/pindo/pgyer/download.rb +105 -0
  95. data/lib/pindo/pgyer/login.rb +61 -0
  96. data/lib/pindo/pgyer/upload.rb +234 -0
  97. data/lib/pindo/pgyer.rb +17 -0
  98. data/lib/pindo/repo/clone.rb +78 -0
  99. data/lib/pindo/repo/create.rb +55 -0
  100. data/lib/pindo/repo/login.rb +64 -0
  101. data/lib/pindo/repo/search.rb +60 -0
  102. data/lib/pindo/repo.rb +16 -0
  103. data/lib/pindo/setup.rb +60 -0
  104. data/lib/pindo/upgrade.rb +56 -0
  105. data/lib/pindo/utils/applovin.rb +213 -0
  106. data/lib/pindo/utils/boss.rb +209 -0
  107. data/lib/pindo/utils/clearcert.rb +60 -0
  108. data/lib/pindo/utils/device.rb +279 -0
  109. data/lib/pindo/utils/icon.rb +91 -0
  110. data/lib/pindo/utils/icon.sh +133 -0
  111. data/lib/pindo/utils/podindex.rb +56 -0
  112. data/lib/pindo/utils/podindex.sh +30 -0
  113. data/lib/pindo/utils/renewproj.rb +146 -0
  114. data/lib/pindo/utils/tgate.rb +159 -0
  115. data/lib/pindo/utils/xcassets.rb +46 -0
  116. data/lib/pindo/utils/xcassets.sh +88 -0
  117. data/lib/pindo/utils.rb +29 -0
  118. data/lib/pindo/version.rb +110 -0
  119. data/lib/pindo.rb +34 -0
  120. metadata +364 -0
@@ -0,0 +1,363 @@
1
+
2
+ module Pindo
3
+ class Command
4
+ module DeployOptions
5
+
6
+ attr_accessor :args_array
7
+ attr_accessor :argv_temp
8
+
9
+ attr_accessor :args_appconfig
10
+ attr_accessor :args_appconfig_dir
11
+ attr_accessor :args_appconfig_fullname
12
+
13
+ attr_accessor :args_apple_id
14
+ attr_accessor :args_bundle_id
15
+ attr_accessor :args_repo_name
16
+
17
+
18
+ attr_accessor :apple_id
19
+ attr_accessor :group_id
20
+ attr_accessor :icloud_id
21
+ attr_accessor :bundle_id
22
+ attr_accessor :bundle_id_pushcontent
23
+ attr_accessor :bundle_id_pushservice
24
+ attr_accessor :bundle_id_keyboard
25
+ attr_accessor :bundle_id_imessage
26
+ attr_accessor :bundle_id_extension
27
+ attr_accessor :bundle_id_siri
28
+ attr_accessor :bundle_id_siriui
29
+ attr_accessor :bundle_id_widget
30
+ attr_accessor :bundle_id_extensionad
31
+ attr_accessor :bundle_id_extensionporn
32
+ attr_accessor :bundle_id_watchapp
33
+ attr_accessor :bundle_id_watchapp_extension
34
+
35
+ attr_accessor :deploy_repo_name
36
+ attr_accessor :deploy_acount_id
37
+ attr_accessor :deploy_group_id
38
+ attr_accessor :deploy_icloud_id
39
+ attr_accessor :deploy_identifier
40
+ attr_accessor :deploy_identifier_pushcontent
41
+ attr_accessor :deploy_identifier_pushservice
42
+ attr_accessor :deploy_identifier_keyboard
43
+ attr_accessor :deploy_identifier_imessage
44
+ attr_accessor :deploy_identifier_siri
45
+ attr_accessor :deploy_identifier_siriui
46
+ attr_accessor :deploy_identifier_widget
47
+ attr_accessor :deploy_identifier_extension
48
+ attr_accessor :deploy_identifier_extensionad
49
+ attr_accessor :deploy_identifier_extensionporn
50
+ attr_accessor :deploy_identifier_watchapp
51
+ attr_accessor :deploy_identifier_watchapp_extension
52
+
53
+ attr_accessor :args_dev_flag
54
+ attr_accessor :args_adhoc_flag
55
+ attr_accessor :args_appstore_flag
56
+
57
+ attr_accessor :newconfuse_flag
58
+ attr_accessor :oldconfuse_flag
59
+
60
+ attr_accessor :config_json
61
+ attr_accessor :additional_args
62
+
63
+ def self.options
64
+ [
65
+ ['--u=', 'input apple id'],
66
+ ['--a=', 'input bundle id'],
67
+ ['--repo=', 'input build config repo name'],
68
+
69
+ ['--dev', 'use dev build mode'],
70
+ ['--adhoc', 'use adhoc build mode'],
71
+ ['--appstore', 'use appstore build mode'],
72
+
73
+ ['--nocreate', 'no create xcode project'],
74
+
75
+ ['--newconfuse', 'use version 2.0 confuse'],
76
+ ['--oldconfuse', 'use version 1.0 confuse'],
77
+ ['--type=class', 'input confuse type, defautl: --type=class_method_variable_protocol_property_category_pods']
78
+
79
+ ].concat(super)
80
+ end
81
+
82
+ def initialize(argv)
83
+
84
+ @args_array = argv.remainder | []
85
+
86
+ @args_appconfig = argv.shift_argument || './config.json'
87
+
88
+ @args_apple_id = argv.option('u')
89
+ @args_bundle_id = argv.option('a')
90
+ @deploy_repo_name = argv.option('repo')
91
+
92
+ @args_dev_flag = argv.flag?('dev', false)
93
+ @args_adhoc_flag = argv.flag?('adhoc', false)
94
+ @args_appstore_flag = argv.flag?('appstore', false)
95
+
96
+ @newconfuse_flag = argv.flag?('newconfuse', true)
97
+ @oldconfuse_flag = argv.flag?('oldconfuse', false)
98
+
99
+ @confuse_type = argv.option('type') || 'class_method_protocol_property_category_variable_pods'
100
+
101
+ super
102
+ @additional_args = argv.remainder!
103
+
104
+ end
105
+
106
+ def validate!
107
+ super
108
+
109
+ if !@args_appconfig.empty? && File::file?(@args_appconfig)
110
+ @args_appconfig_dir=File::expand_path(File::dirname(@args_appconfig))
111
+ @args_appconfig_fullname=File::join(@args_appconfig_dir, File::basename(@args_appconfig))
112
+ @config_json=JSON.parse(File.read(@args_appconfig_fullname))
113
+ end
114
+
115
+ version = nil
116
+ if !@config_json.nil?
117
+ version = @config_json['config_version']
118
+ end
119
+ if version.nil?
120
+ # raise Informative, "Your config.json is out of date, please upgrade config.json !!!"
121
+ end
122
+
123
+ init_deploy_params()
124
+
125
+ init_develop_params()
126
+
127
+ help! 'Need input a apple id, you may input wiht --u options' if @args_apple_id.nil? && @deploy_acount_id.nil?
128
+
129
+ help! 'Need input a bundle id, you may input with --a options' if @args_bundle_id.nil? && @deploy_identifier.nil?
130
+
131
+ print_params_info()
132
+
133
+ end
134
+
135
+ def get_build_type_args()
136
+ args_temp = []
137
+
138
+ mode_flag = "--adhoc"
139
+ if @args_dev_flag
140
+ mode_flag = "--dev"
141
+ end
142
+ if @args_appstore_flag
143
+ mode_flag = "--appstore"
144
+ end
145
+ args_temp << mode_flag
146
+ end
147
+
148
+ def get_modify_bundleid_args()
149
+
150
+ args_temp = []
151
+
152
+ unless @apple_id.eql?(pindo_single_config.demo_apple_id)
153
+ @args_apple_id = pindo_single_config.demo_apple_id
154
+ args_temp << "--u=#{@args_apple_id}"
155
+ end
156
+
157
+ unless @apple_id.eql?(pindo_single_config.demo_apple_id) && @apple_id.eql?(@deploy_acount_id)
158
+ if @args_bundle_id.nil? || @args_bundle_id.empty?
159
+ @args_bundle_id = pindo_single_config.demo_bundle_id
160
+ args_temp << "--a=#{@args_bundle_id}"
161
+ else
162
+ args_temp << "--a=#{@args_bundle_id}"
163
+ end
164
+ end
165
+
166
+ unless @deploy_repo_name.nil?
167
+ args_temp << "--repo=#{@deploy_repo_name}"
168
+ end
169
+
170
+ return args_temp
171
+ end
172
+
173
+ def get_confuse_type_args()
174
+ args_temp = []
175
+ confuse_flag = "--newconfuse"
176
+ if @oldconfuse_flag
177
+ mode_flag = "--oldconfuse"
178
+ end
179
+ args_temp << mode_flag
180
+ end
181
+
182
+ def init_deploy_params()
183
+
184
+ if !@config_json.nil?
185
+ if @config_json['account_info'] && @config_json['account_info']['apple_acount_id']
186
+ @deploy_acount_id = @config_json['account_info']['apple_acount_id']
187
+ end
188
+
189
+ if @config_json['app_info'] && @config_json['app_info']['app_group_id']
190
+ @deploy_group_id = @config_json['app_info']['app_group_id']
191
+ end
192
+
193
+ if @config_json['app_info'] && @config_json['app_info']['app_icloud_id']
194
+ @deploy_icloud_id = @config_json['app_info']['app_icloud_id']
195
+ end
196
+
197
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier']
198
+ @deploy_identifier = @config_json['app_info']['app_identifier']
199
+ end
200
+
201
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_pushcontent']
202
+ @deploy_identifier_pushcontent = @config_json['app_info']['app_identifier_pushcontent']
203
+ end
204
+
205
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_pushservice']
206
+ @deploy_identifier_pushservice = @config_json['app_info']['app_identifier_pushservice']
207
+ end
208
+
209
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_keyboard']
210
+ @deploy_identifier_keyboard = @config_json['app_info']['app_identifier_keyboard']
211
+ end
212
+
213
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_imessage']
214
+ @deploy_identifier_imessage = @config_json['app_info']['app_identifier_imessage']
215
+ end
216
+
217
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_siri']
218
+ @deploy_identifier_siri = @config_json['app_info']['app_identifier_siri']
219
+ end
220
+
221
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_siriui']
222
+ @deploy_identifier_siriui = @config_json['app_info']['app_identifier_siriui']
223
+ end
224
+
225
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_widget']
226
+ @deploy_identifier_widget = @config_json['app_info']['app_identifier_widget']
227
+ end
228
+
229
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_extension']
230
+ @deploy_identifier_extension = @config_json['app_info']['app_identifier_extension']
231
+ end
232
+
233
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_extensionad']
234
+ @deploy_identifier_extensionad = @config_json['app_info']['app_identifier_extensionad']
235
+ end
236
+
237
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_extensionporn']
238
+ @deploy_identifier_extensionporn = @config_json['app_info']['app_identifier_extensionporn']
239
+ end
240
+
241
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_watchapp']
242
+ @deploy_identifier_watchapp = @config_json['app_info']['app_identifier_watchapp']
243
+ end
244
+
245
+ if @config_json['app_info'] && @config_json['app_info']['app_identifier_watchapp_extension']
246
+ @deploy_identifier_watchapp_extension = @config_json['app_info']['app_identifier_watchapp_extension']
247
+ end
248
+ end
249
+
250
+ if @deploy_repo_name.nil?
251
+ @deploy_repo_name = @deploy_identifier
252
+ end
253
+
254
+ @apple_id = @deploy_acount_id
255
+ @bundle_id = @deploy_identifier
256
+ @group_id = @deploy_group_id
257
+ @icloud_id = @deploy_icloud_id
258
+ @bundle_id_pushcontent = @deploy_identifier_pushcontent
259
+ @bundle_id_pushservice = @deploy_identifier_pushservice
260
+ @bundle_id_keyboard = @deploy_identifier_keyboard
261
+ @bundle_id_imessage = @deploy_identifier_imessage
262
+ @bundle_id_siri = @deploy_identifier_siri
263
+ @bundle_id_siriui = @deploy_identifier_siriui
264
+ @bundle_id_widget = @deploy_identifier_widget
265
+ @bundle_id_extension = @deploy_identifier_extension
266
+ @bundle_id_extensionad = @deploy_identifier_extensionad
267
+ @bundle_id_extensionporn = @deploy_identifier_extensionporn
268
+ @bundle_id_watchapp = @deploy_identifier_watchapp
269
+ @bundle_id_watchapp_extension = @deploy_identifier_watchapp_extension
270
+
271
+ end
272
+
273
+ def init_develop_params()
274
+ unless @args_apple_id.nil?
275
+ @apple_id = @args_apple_id
276
+ end
277
+
278
+ unless @args_bundle_id.nil?
279
+ @bundle_id = @args_bundle_id
280
+ @group_id = "group." + @bundle_id
281
+ @icloud_id = "iCloud." + @bundle_id
282
+ @bundle_id_pushcontent = @bundle_id + '.content'
283
+ @bundle_id_pushservice = @bundle_id + '.service'
284
+ @bundle_id_keyboard = @bundle_id + '.keyboard'
285
+ @bundle_id_imessage = @bundle_id + '.imessage'
286
+ @bundle_id_siri = @bundle_id + '.siri'
287
+ @bundle_id_siriui = @bundle_id + '.siriui'
288
+ @bundle_id_widget = @bundle_id + '.widget'
289
+ @bundle_id_extension = @bundle_id + '.extension'
290
+ @bundle_id_extensionad = @bundle_id + '.extensionad'
291
+ @bundle_id_extensionporn = @bundle_id + '.extensionporn'
292
+ @bundle_id_watchapp = @bundle_id + '.watchapp'
293
+ @bundle_id_watchapp_extension = @bundle_id + '.watchapp.extension'
294
+ end
295
+ end
296
+
297
+
298
+ def check_config_version()
299
+
300
+ build_version = @config_json['config_version']
301
+ build_version_int = build_version.split('.').map(&:to_i)
302
+
303
+ if build_version_int[0] < 1 || (build_version_int[0] ==1 && build_version_int[1] < 4)
304
+ raise Informative, "config.json 版本太低,配置结构发生变化了,要求config_version 1.4.0及以上版本, 可以使用pindo deploy updateconfig 更新config.json"
305
+ end
306
+ end
307
+
308
+ def print_params_info()
309
+
310
+ puts "\n\n\n======================================================================================="
311
+ puts "***************************************************************************************\n\n"
312
+ puts "Action: #{self.class.summary} \n\n"
313
+ puts "config.json = #{@args_appconfig_fullname}"
314
+ puts "args_apple_id = #{@args_apple_id}"
315
+ puts "args_bundle_id = #{@args_bundle_id}\n\n"
316
+
317
+ puts "deploy_repo_name = #{@deploy_repo_name}"
318
+ puts "deploy_acount_id = #{@deploy_acount_id}"
319
+ puts "deploy_group_id = #{@deploy_group_id}"
320
+ puts "deploy_icloud_id = #{@deploy_icloud_id}"
321
+ puts "deploy_identifier = #{@deploy_identifier}"
322
+ puts "deploy_identifier_pushcontent = #{@deploy_identifier_pushcontent}"
323
+ puts "deploy_identifier_pushservice = #{@deploy_identifier_pushservice}"
324
+ puts "deploy_identifier_keyboard = #{@deploy_identifier_keyboard}"
325
+ puts "deploy_identifier_imessage = #{@deploy_identifier_imessage}"
326
+ puts "deploy_identifier_siri = #{@deploy_identifier_siri}"
327
+ puts "deploy_identifier_siriui = #{@deploy_identifier_siriui}"
328
+ puts "deploy_identifier_widget = #{@deploy_identifier_widget}"
329
+ puts "deploy_identifier_extension = #{@deploy_identifier_extension}"
330
+ puts "deploy_identifier_extensionad = #{@deploy_identifier_extensionad}"
331
+ puts "deploy_identifier_extensionporn = #{@deploy_identifier_extensionporn}"
332
+ puts "deploy_identifier_watchapp = #{@deploy_identifier_watchapp}"
333
+ puts "deploy_identifier_watchapp_extension = #{@deploy_identifier_watchapp_extension}\n\n"
334
+
335
+ puts "apple_id = #{@apple_id}"
336
+ puts "bundle_id = #{@bundle_id}"
337
+ puts "group_id = #{@group_id}"
338
+ puts "icloud_id = #{@icloud_id}"
339
+ puts "bundle_id_pushcontent = #{@bundle_id_pushcontent}"
340
+ puts "bundle_id_pushservice = #{@bundle_id_pushservice}"
341
+ puts "bundle_id_keyboard = #{@bundle_id_keyboard}"
342
+ puts "bundle_id_imessage = #{@bundle_id_imessage}"
343
+ puts "bundle_id_extension = #{@bundle_id_extension}"
344
+ puts "bundle_id_siri = #{@bundle_id_siri}"
345
+ puts "bundle_id_siriui = #{@bundle_id_siriui}"
346
+ puts "bundle_id_widget = #{@bundle_id_widget}"
347
+ puts "bundle_id_extensionad = #{@bundle_id_extensionad}"
348
+ puts "bundle_id_extensionporn = #{@bundle_id_extensionporn}"
349
+ puts "bundle_id_watchapp = #{@bundle_id_watchapp}"
350
+ puts "bundle_id_watchapp_extension = #{@bundle_id_watchapp_extension}\n\n"
351
+
352
+ puts "args_dev_flag = #{@args_dev_flag}"
353
+ puts "args_adhoc_flag = #{@args_adhoc_flag}"
354
+ puts "args_appstore_flag = #{@args_appstore_flag}"
355
+
356
+ puts "\n***************************************************************************************"
357
+ puts "=======================================================================================\n\n"
358
+
359
+ end
360
+
361
+ end
362
+ end
363
+ end
@@ -0,0 +1,104 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'pindo/module/pgyerhelper.rb'
6
+
7
+ module Pindo
8
+ class Command
9
+ class Pgyer < Command
10
+ class Apptest < Pgyer
11
+
12
+
13
+ self.summary = '获取pgyer中指定app的测试链接和二维码'
14
+
15
+ self.description = <<-DESC
16
+ 获取pgyer中指定app的测试链接和二维码,终端运行:pindo pgyer apptest
17
+ DESC
18
+
19
+ self.arguments = [
20
+
21
+ ]
22
+
23
+ def self.options
24
+ [
25
+ ['--login', '强制再次登录pgyer网站'],
26
+ ['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo pgyer apptest --proj=prancksoundv4'],
27
+ ['--list', '列出上传记录并选择,用法:pindo pgyer apptest --list'],
28
+ ['--send', '上传到之后是否发送测试信息,用法:pindo pgyer apptest --send'],
29
+ ].concat(super)
30
+ end
31
+
32
+
33
+ def initialize(argv)
34
+
35
+ @args_login_flag = argv.flag?('login', false)
36
+ @args_list_flag = argv.flag?('list', false)
37
+ @args_send_flag = argv.flag?('send', false)
38
+ @args_proj_name = argv.option('proj')
39
+
40
+ super(argv)
41
+ @additional_args = argv.remainder!
42
+ end
43
+
44
+ def validate!
45
+ if @args_proj_name.nil?
46
+ xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
47
+ proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
48
+ if !proj_name.nil?
49
+ puts
50
+ answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
51
+ if answer
52
+ @args_proj_name = proj_name
53
+ end
54
+ end
55
+ end
56
+ super
57
+ end
58
+
59
+ def run
60
+
61
+ @pgyer_client = PgyerClient.new
62
+ app_info_obj = nil
63
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
64
+ if login_success
65
+ PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
66
+ if !@args_proj_name.nil?
67
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
68
+ end
69
+
70
+ if app_info_obj.nil?
71
+ proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
72
+ @args_proj_name = proj_name.strip
73
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
74
+ end
75
+ end
76
+
77
+ if app_info_obj.nil?
78
+ raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
79
+ end
80
+
81
+ if !app_info_obj.nil?
82
+
83
+ version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(client:@pgyer_client, app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
84
+
85
+ if version_item_obj.nil?
86
+ raise Informative, "没有找到上传记录"
87
+ end
88
+
89
+
90
+ msg_data = PgyerHelper.share_instace.make_msg_data(app_info_obj:app_info_obj, app_version_info_obj:version_item_obj, msg_from: @pgyer_client.token["username"])
91
+ PgyerHelper.share_instace.print_app_version_info(msg_data:msg_data)
92
+ if @args_send_flag
93
+ PgyerHelper.share_instace.send_apptest_wechat_msg(msg_data:msg_data)
94
+ end
95
+
96
+ end
97
+
98
+ end
99
+
100
+
101
+ end
102
+ end
103
+ end
104
+ end
@@ -0,0 +1,95 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'pindo/module/pgyerhelper.rb'
6
+
7
+
8
+ module Pindo
9
+ class Command
10
+ class Pgyer < Command
11
+ class Comment < Pgyer
12
+
13
+ self.summary = '修改pgyer中已经上传安装包的备注信息'
14
+
15
+ self.description = <<-DESC
16
+ 修改pgyer中已经上传安装包的备注信息,终端运行:pindo pgyer apptest
17
+ DESC
18
+
19
+ self.arguments = [
20
+
21
+ ]
22
+
23
+ def self.options
24
+ [
25
+ ['--login', '强制再次登录pgyer网站'],
26
+ ['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo pgyer comment --proj=prancksoundv4'],
27
+ ['--list', '列出上传记录并选择,用法:pindo pgyer comment --list'],
28
+
29
+ ].concat(super)
30
+ end
31
+
32
+
33
+
34
+ def initialize(argv)
35
+
36
+ @args_login_flag = argv.flag?('login', false)
37
+ @args_list_flag = argv.flag?('list', false)
38
+ @args_proj_name = argv.option('proj')
39
+
40
+ super(argv)
41
+ @additional_args = argv.remainder!
42
+ end
43
+
44
+ def validate!
45
+ if @args_proj_name.nil?
46
+ xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
47
+ proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
48
+ if !proj_name.nil?
49
+ puts
50
+ answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
51
+ if answer
52
+ @args_proj_name = proj_name
53
+ end
54
+ end
55
+ end
56
+ super
57
+ end
58
+
59
+ def run
60
+
61
+ @pgyer_client = PgyerClient.new
62
+ app_info_obj = nil
63
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
64
+ if login_success
65
+ PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
66
+ if !@args_proj_name.nil?
67
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
68
+ end
69
+
70
+ if app_info_obj.nil?
71
+ proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
72
+ @args_proj_name = proj_name.strip
73
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
74
+ end
75
+ end
76
+
77
+ if app_info_obj.nil?
78
+ raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
79
+ end
80
+
81
+
82
+ version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(client:@pgyer_client, app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
83
+
84
+ if version_item_obj.nil?
85
+ raise Informative, "没有找到上传记录"
86
+ end
87
+
88
+ PgyerHelper.share_instace.modify_coment(client:@pgyer_client, app_info_obj:app_info_obj, version_item_obj:version_item_obj)
89
+
90
+ end
91
+
92
+ end
93
+ end
94
+ end
95
+ end
@@ -0,0 +1,105 @@
1
+
2
+
3
+ require 'highline/import'
4
+ require 'fileutils'
5
+ require 'pindo/module/pgyerhelper.rb'
6
+
7
+
8
+ module Pindo
9
+ class Command
10
+ class Pgyer < Command
11
+ class Download < Pgyer
12
+
13
+
14
+ self.summary = '从pgyer下载指定app的安装包'
15
+
16
+ self.description = <<-DESC
17
+ 从pgyer下载指定app的安装包。终端直接运行:pindo pgyer download
18
+ DESC
19
+
20
+ self.arguments = [
21
+
22
+ ]
23
+
24
+ def self.options
25
+ [
26
+ ['--login', '强制再次登录pgyer网站'],
27
+ ['--list', '列出上传记录并选择,用法:pindo pgyer download --list'],
28
+ ['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo pgyer download --proj=prancksoundv4'],
29
+ ].concat(super)
30
+ end
31
+
32
+
33
+ def initialize(argv)
34
+
35
+ @args_login_flag = argv.flag?('login', false)
36
+ @args_list_flag = argv.flag?('list', false)
37
+ @args_proj_name = argv.option('proj')
38
+ @app_version_index = argv.option('index') || nil
39
+
40
+ super(argv)
41
+ @additional_args = argv.remainder!
42
+ end
43
+
44
+ def validate!
45
+ if @args_proj_name.nil?
46
+ xcodeproj_file_name = Dir.glob(File.join(Dir.pwd, "/*.xcodeproj")).max_by {|f| File.mtime(f)}
47
+ proj_name = File.basename(xcodeproj_file_name, ".xcodeproj") if xcodeproj_file_name
48
+ if !proj_name.nil?
49
+ puts
50
+ answer = agree("Pgyer的App项目代号是: #{proj_name} ?(Y/n)")
51
+ if answer
52
+ @args_proj_name = proj_name
53
+ end
54
+ end
55
+ end
56
+ super
57
+ end
58
+
59
+ def run
60
+
61
+ @pgyer_client = PgyerClient.new
62
+ app_info_obj = nil
63
+ login_success = @pgyer_client.do_login(force_login:@args_login_flag)
64
+ if login_success
65
+ PgyerHelper.share_instace.get_app_list_in_pgyer(client:@pgyer_client)
66
+ if !@args_proj_name.nil?
67
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
68
+ end
69
+
70
+ if app_info_obj.nil?
71
+ proj_name = ask('请输入Pyger上的App代号(大小写空格忽略):') || nil
72
+ @args_proj_name = proj_name.strip
73
+ app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:@args_proj_name)
74
+ end
75
+ end
76
+
77
+ if app_info_obj.nil?
78
+ raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, pgyer网站没有该App"
79
+ end
80
+
81
+ version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(client:@pgyer_client, app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
82
+
83
+ if version_item_obj.nil?
84
+ raise Informative, "没有找到上传记录"
85
+ end
86
+
87
+ download_url = version_item_obj["cdnUrl"]
88
+
89
+ base_name = [app_info_obj["appName"], version_item_obj["appVersion"], version_item_obj["incId"]].join("_")
90
+ base_name = base_name + File.extname(download_url)
91
+ # key_proj_name = proj_name.downcase.strip.gsub(/[\s\-_]/, '')
92
+ base_name = base_name.strip.gsub(/[\s]/, '').downcase
93
+ file_name = File.join(Dir.pwd, base_name)
94
+ puts "文件名: #{file_name}"
95
+ puts "下载中..."
96
+ File.binwrite(file_name, FastlaneCore::Helper.open_uri(download_url).read)
97
+ puts "下载完成!"
98
+
99
+
100
+ end
101
+
102
+ end
103
+ end
104
+ end
105
+ end