pindo 4.6.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/bin/pindo +35 -0
- data/lib/pindo/base/aeshelper.rb +31 -0
- data/lib/pindo/base/deviceinfo.rb +90 -0
- data/lib/pindo/base/executable.rb +224 -0
- data/lib/pindo/base/githelper.rb +489 -0
- data/lib/pindo/base/hashhelper.rb +134 -0
- data/lib/pindo/base/plaininformative.rb +15 -0
- data/lib/pindo/base/plistbuddyexecutable.rb +121 -0
- data/lib/pindo/base/standarderror.rb +14 -0
- data/lib/pindo/client/applovinclient.rb +156 -0
- data/lib/pindo/client/aws3sclient.rb +183 -0
- data/lib/pindo/client/bossclient.rb +229 -0
- data/lib/pindo/client/bossconfigclient.rb +175 -0
- data/lib/pindo/client/giteeclient.rb +65 -0
- data/lib/pindo/client/httpclient.rb +40 -0
- data/lib/pindo/client/pgyerclient.rb +439 -0
- data/lib/pindo/client/tgateclient.rb +103 -0
- data/lib/pindo/command.rb +101 -0
- data/lib/pindo/config/pindoconfig.rb +439 -0
- data/lib/pindo/config/pindouserlocalconfig.rb +81 -0
- data/lib/pindo/deploy/Fastfile +233 -0
- data/lib/pindo/deploy/build.rb +167 -0
- data/lib/pindo/deploy/bundleid.rb +245 -0
- data/lib/pindo/deploy/cert.rb +508 -0
- data/lib/pindo/deploy/check.rb +79 -0
- data/lib/pindo/deploy/configproj.rb +89 -0
- data/lib/pindo/deploy/confusecode.rb +248 -0
- data/lib/pindo/deploy/confuseproj.rb +112 -0
- data/lib/pindo/deploy/fabric.rb +58 -0
- data/lib/pindo/deploy/getitcinfo.rb +248 -0
- data/lib/pindo/deploy/iap.rb +796 -0
- data/lib/pindo/deploy/initconfig.rb +128 -0
- data/lib/pindo/deploy/itcapp.rb +147 -0
- data/lib/pindo/deploy/itcinfo.rb +369 -0
- data/lib/pindo/deploy/pem.rb +55 -0
- data/lib/pindo/deploy/pullconfig.rb +46 -0
- data/lib/pindo/deploy/pushconfig.rb +83 -0
- data/lib/pindo/deploy/quswark.rb +146 -0
- data/lib/pindo/deploy/quswauth.rb +67 -0
- data/lib/pindo/deploy/reportbug.rb +135 -0
- data/lib/pindo/deploy/resign.rb +338 -0
- data/lib/pindo/deploy/tag.rb +108 -0
- data/lib/pindo/deploy/updateconfig.rb +129 -0
- data/lib/pindo/deploy/uploadipa.rb +63 -0
- data/lib/pindo/deploy.rb +44 -0
- data/lib/pindo/dev/autobuild.rb +204 -0
- data/lib/pindo/dev/autoresign.rb +186 -0
- data/lib/pindo/dev/confusecode.rb +127 -0
- data/lib/pindo/dev/confuseproj.rb +111 -0
- data/lib/pindo/dev/createbuild.rb +159 -0
- data/lib/pindo/dev/debug.rb +141 -0
- data/lib/pindo/dev/pub.rb +171 -0
- data/lib/pindo/dev/renewcert.rb +142 -0
- data/lib/pindo/dev.rb +23 -0
- data/lib/pindo/env/dreamstudio.rb +53 -0
- data/lib/pindo/env/flutter.rb +59 -0
- data/lib/pindo/env/flutter.sh +116 -0
- data/lib/pindo/env/quarkenv.rb +58 -0
- data/lib/pindo/env/swarkenv.rb +62 -0
- data/lib/pindo/env/workhard.rb +56 -0
- data/lib/pindo/env.rb +17 -0
- data/lib/pindo/ipa/autoresign.rb +188 -0
- data/lib/pindo/ipa/import.rb +261 -0
- data/lib/pindo/ipa/output.rb +396 -0
- data/lib/pindo/ipa.rb +22 -0
- data/lib/pindo/lib/forcepush.rb +159 -0
- data/lib/pindo/lib/lint.rb +115 -0
- data/lib/pindo/lib/push.rb +143 -0
- data/lib/pindo/lib/update.rb +75 -0
- data/lib/pindo/lib.rb +18 -0
- data/lib/pindo/module/appselect.rb +200 -0
- data/lib/pindo/module/appstore_in_app_purchase.rb +1803 -0
- data/lib/pindo/module/appstore_metadata_connect_api_helper.rb +12 -0
- data/lib/pindo/module/appstore_metadata_fastlane_helper.rb +922 -0
- data/lib/pindo/module/buildconfighelper.rb +13 -0
- data/lib/pindo/module/buildhelper.rb +76 -0
- data/lib/pindo/module/commonconfuseproj.rb +271 -0
- data/lib/pindo/module/config_project.sh +143 -0
- data/lib/pindo/module/configprojhelper.rb +631 -0
- data/lib/pindo/module/iap_tier.json +813 -0
- data/lib/pindo/module/icon_contents.json +116 -0
- data/lib/pindo/module/imessage_icon.json +91 -0
- data/lib/pindo/module/imgset_contents.json +21 -0
- data/lib/pindo/module/launchimg_contents.json +21 -0
- data/lib/pindo/module/pemcreate.rb +63 -0
- data/lib/pindo/module/pgyerhelper.rb +339 -0
- data/lib/pindo/module/xcodebuildpre.rb +258 -0
- data/lib/pindo/module/xcodehelper.rb +521 -0
- data/lib/pindo/options/appconfigoptions.rb +23 -0
- data/lib/pindo/options/deployoptions.rb +363 -0
- data/lib/pindo/pgyer/apptest.rb +104 -0
- data/lib/pindo/pgyer/comment.rb +95 -0
- data/lib/pindo/pgyer/download.rb +105 -0
- data/lib/pindo/pgyer/login.rb +61 -0
- data/lib/pindo/pgyer/upload.rb +234 -0
- data/lib/pindo/pgyer.rb +17 -0
- data/lib/pindo/repo/clone.rb +78 -0
- data/lib/pindo/repo/create.rb +55 -0
- data/lib/pindo/repo/login.rb +64 -0
- data/lib/pindo/repo/search.rb +60 -0
- data/lib/pindo/repo.rb +16 -0
- data/lib/pindo/setup.rb +60 -0
- data/lib/pindo/upgrade.rb +56 -0
- data/lib/pindo/utils/applovin.rb +213 -0
- data/lib/pindo/utils/boss.rb +209 -0
- data/lib/pindo/utils/clearcert.rb +60 -0
- data/lib/pindo/utils/device.rb +279 -0
- data/lib/pindo/utils/icon.rb +91 -0
- data/lib/pindo/utils/icon.sh +133 -0
- data/lib/pindo/utils/podindex.rb +56 -0
- data/lib/pindo/utils/podindex.sh +30 -0
- data/lib/pindo/utils/renewproj.rb +146 -0
- data/lib/pindo/utils/tgate.rb +159 -0
- data/lib/pindo/utils/xcassets.rb +46 -0
- data/lib/pindo/utils/xcassets.sh +88 -0
- data/lib/pindo/utils.rb +29 -0
- data/lib/pindo/version.rb +110 -0
- data/lib/pindo.rb +34 -0
- 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
|