pindo 5.17.0 → 5.17.3
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/pindo/command/android/autobuild.rb +11 -11
- data/lib/pindo/command/appstore/adhocbuild.rb +5 -9
- data/lib/pindo/command/appstore/autoresign.rb +4 -7
- data/lib/pindo/command/ios/autobuild.rb +10 -11
- data/lib/pindo/command/ios/autoresign.rb +4 -5
- data/lib/pindo/command/jps/apptest.rb +6 -6
- data/lib/pindo/command/jps/bind.rb +5 -5
- data/lib/pindo/command/jps/download.rb +4 -4
- data/lib/pindo/command/jps/media.rb +5 -5
- data/lib/pindo/command/jps/resign.rb +7 -7
- data/lib/pindo/command/jps/upload.rb +8 -8
- data/lib/pindo/command/unity/autobuild.rb +4 -5
- data/lib/pindo/command/web/autobuild.rb +11 -11
- data/lib/pindo/module/pgyer/pgyerhelper.rb +42 -55
- data/lib/pindo/module/task/model/jps/jps_resign_task.rb +1 -2
- data/lib/pindo/module/task/model/jps/jps_upload_task.rb +0 -1
- data/lib/pindo/module/unity/nuget_helper.rb +5 -3
- data/lib/pindo/options/core/global_options_state.rb +1 -1
- data/lib/pindo/options/groups/jps_options.rb +7 -7
- data/lib/pindo/version.rb +2 -2
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 17b6cfbf38491d35d697067e22eac1b3246e892c06c0a2a621fcfdb9ae66d6f7
|
|
4
|
+
data.tar.gz: e95883cc77797db55c3a31cfd6a723092356f8086ed9df9e6b14f9eea7ff684c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e021647b5933a7ce3b3677f8a914fa9e9a5d3732a0ac03f6ba82cf352a3baf5b2b49874f3be64f7fb6b55e517c271987711c95fc67ef321b125f47bf664d7f52
|
|
7
|
+
data.tar.gz: 4c96d77c6ef2ec92a961881195c30a5c826d4f580dbc574b046d1b636a43fdedec6dee96642cfb2d03b8a92f650d9440c835bb291abaff3f1b9dee32e4ec1a52
|
|
@@ -89,7 +89,7 @@ module Pindo
|
|
|
89
89
|
def self.option_items
|
|
90
90
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
91
91
|
Pindo::Options::BuildOptions.select(:bundle_name), # 添加 bundle_name 参数
|
|
92
|
-
Pindo::Options::JPSOptions.select(:
|
|
92
|
+
Pindo::Options::JPSOptions.select(:conf, :upload, :media, :bind, :send),
|
|
93
93
|
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
|
|
94
94
|
Pindo::Options::UnityOptions.select_with_defaults(skipconfig: true),
|
|
95
95
|
Pindo::Options::TaskOptions.select(:multi),
|
|
@@ -107,7 +107,7 @@ module Pindo
|
|
|
107
107
|
@options = initialize_options(argv)
|
|
108
108
|
|
|
109
109
|
@args_release_flag = argv.flag?('release', false)
|
|
110
|
-
@
|
|
110
|
+
@args_conf = @options[:conf]
|
|
111
111
|
@args_bundle_name = @options[:bundle_name] # 从 @options 获取,确保能被缓存
|
|
112
112
|
|
|
113
113
|
# send、media 或 bind 都依赖 upload:如果指定了任一参数,自动启用 upload
|
|
@@ -182,7 +182,7 @@ module Pindo
|
|
|
182
182
|
# 获取 JPS 配置
|
|
183
183
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
184
184
|
working_directory: pindo_project_dir,
|
|
185
|
-
|
|
185
|
+
conf: @args_conf,
|
|
186
186
|
package_type: 'apk'
|
|
187
187
|
)
|
|
188
188
|
|
|
@@ -260,7 +260,7 @@ module Pindo
|
|
|
260
260
|
|
|
261
261
|
# 2.3 Unity 导出任务(依赖上一个任务)
|
|
262
262
|
unity_context = {}
|
|
263
|
-
unity_context[:project_name] =
|
|
263
|
+
unity_context[:project_name] = nil
|
|
264
264
|
|
|
265
265
|
unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
|
|
266
266
|
'android',
|
|
@@ -285,7 +285,7 @@ module Pindo
|
|
|
285
285
|
build_options = {
|
|
286
286
|
project_path: android_project_path,
|
|
287
287
|
bundle_name: config[:bundle_name],
|
|
288
|
-
|
|
288
|
+
conf: @args_conf,
|
|
289
289
|
app_info_obj: config[:app_info_obj],
|
|
290
290
|
workflow_info: config[:workflow_info],
|
|
291
291
|
# Git 版本参数
|
|
@@ -320,7 +320,7 @@ module Pindo
|
|
|
320
320
|
nil,
|
|
321
321
|
app_info_obj: config[:app_info_obj],
|
|
322
322
|
workflow_info: config[:workflow_info],
|
|
323
|
-
project_name:
|
|
323
|
+
project_name: nil
|
|
324
324
|
)
|
|
325
325
|
upload_task.dependencies << build_task.id
|
|
326
326
|
tasks << upload_task
|
|
@@ -330,7 +330,7 @@ module Pindo
|
|
|
330
330
|
message_task = Pindo::TaskSystem::JPSMessageTask.new(
|
|
331
331
|
nil, # app_version_info 为 nil,从依赖任务获取
|
|
332
332
|
app_info_obj: config[:app_info_obj],
|
|
333
|
-
project_name:
|
|
333
|
+
project_name: nil,
|
|
334
334
|
send_message_type: 'self' # 固定发送给自己
|
|
335
335
|
)
|
|
336
336
|
message_task.dependencies << upload_task.id
|
|
@@ -342,7 +342,7 @@ module Pindo
|
|
|
342
342
|
# 获取 Git 管理类型的工作流(不同于 APK 上传的工作流)
|
|
343
343
|
git_app_info_obj, git_workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
344
344
|
working_directory: config[:project_path],
|
|
345
|
-
|
|
345
|
+
conf: @args_conf,
|
|
346
346
|
package_type: nil, # package_type 在 manage_type=git 时会被忽略
|
|
347
347
|
manage_type: "git"
|
|
348
348
|
)
|
|
@@ -352,7 +352,7 @@ module Pindo
|
|
|
352
352
|
config[:project_path], # upload_path
|
|
353
353
|
app_info_obj: git_app_info_obj,
|
|
354
354
|
workflow_info: git_workflow_info,
|
|
355
|
-
project_name:
|
|
355
|
+
project_name: nil
|
|
356
356
|
)
|
|
357
357
|
# 依赖 Git 提交任务
|
|
358
358
|
media_upload_task.dependencies << git_commit_task.id
|
|
@@ -367,7 +367,7 @@ module Pindo
|
|
|
367
367
|
project_dir: config[:project_path],
|
|
368
368
|
app_info_obj: config[:app_info_obj],
|
|
369
369
|
workflow_info: config[:workflow_info],
|
|
370
|
-
project_name:
|
|
370
|
+
project_name: nil
|
|
371
371
|
)
|
|
372
372
|
# 依赖上传任务和 Git 提交任务
|
|
373
373
|
bind_package_task.dependencies << upload_task.id
|
|
@@ -380,7 +380,7 @@ module Pindo
|
|
|
380
380
|
# 获取 Git 工作流信息
|
|
381
381
|
git_app_info_obj, git_workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
382
382
|
working_directory: config[:project_path],
|
|
383
|
-
|
|
383
|
+
conf: @args_conf,
|
|
384
384
|
package_type: nil,
|
|
385
385
|
manage_type: "git"
|
|
386
386
|
)
|
|
@@ -79,7 +79,7 @@ module Pindo
|
|
|
79
79
|
@option_items ||= begin
|
|
80
80
|
items = Pindo::Options::OptionGroup.merge(
|
|
81
81
|
Pindo::Options::BuildOptions.select(:bundleid),
|
|
82
|
-
Pindo::Options::JPSOptions.select(:
|
|
82
|
+
Pindo::Options::JPSOptions.select(:conf, :upload, :send),
|
|
83
83
|
Pindo::Options::UnityOptions.all
|
|
84
84
|
)
|
|
85
85
|
|
|
@@ -114,7 +114,7 @@ module Pindo
|
|
|
114
114
|
@args_send_flag = @options[:send]
|
|
115
115
|
# send 依赖 upload:如果指定了 send,自动启用 upload
|
|
116
116
|
@args_upload_flag = @options[:send] || @options[:upload]
|
|
117
|
-
@
|
|
117
|
+
@args_conf = @options[:conf]
|
|
118
118
|
@args_increase_flag = @options[:increase]
|
|
119
119
|
@args_skip_config = argv.flag?('skipconfig', false)
|
|
120
120
|
@args_skip_lib = argv.flag?('skiplib', false)
|
|
@@ -256,7 +256,7 @@ module Pindo
|
|
|
256
256
|
|
|
257
257
|
# 1.4 Unity 导出任务(依赖上一个任务)
|
|
258
258
|
unity_context = {}
|
|
259
|
-
unity_context[:project_name] =
|
|
259
|
+
unity_context[:project_name] = nil
|
|
260
260
|
|
|
261
261
|
unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
|
|
262
262
|
'ios',
|
|
@@ -281,7 +281,6 @@ module Pindo
|
|
|
281
281
|
|
|
282
282
|
build_options = {
|
|
283
283
|
project_path: ios_project_path,
|
|
284
|
-
proj_name: @args_proj_name,
|
|
285
284
|
upload: @args_upload_flag,
|
|
286
285
|
send: @args_send_flag
|
|
287
286
|
}
|
|
@@ -304,7 +303,7 @@ module Pindo
|
|
|
304
303
|
nil,
|
|
305
304
|
app_info_obj: config[:app_info_obj],
|
|
306
305
|
workflow_info: config[:workflow_info],
|
|
307
|
-
project_name:
|
|
306
|
+
project_name: nil,
|
|
308
307
|
upload_desc: "AdHoc 包",
|
|
309
308
|
context: {
|
|
310
309
|
send_to_chat: @args_send_flag
|
|
@@ -334,15 +333,12 @@ module Pindo
|
|
|
334
333
|
# 忽略错误,proj_name 保持为 nil
|
|
335
334
|
end
|
|
336
335
|
|
|
337
|
-
# 如果有命令行参数的 proj_name,优先使用
|
|
338
|
-
proj_name = @args_proj_name if @args_proj_name && !@args_proj_name.empty?
|
|
339
|
-
|
|
340
336
|
# 只在需要上传时获取 JPS 配置
|
|
341
337
|
if @args_upload_flag
|
|
342
338
|
app_info_obj, workflow_info = PgyerHelper.share_instace.get_adhoc_upload_info(
|
|
343
339
|
working_directory: pindo_project_dir,
|
|
344
340
|
package_type: 'ipa',
|
|
345
|
-
|
|
341
|
+
conf: @args_conf
|
|
346
342
|
)
|
|
347
343
|
else
|
|
348
344
|
app_info_obj = nil
|
|
@@ -85,7 +85,7 @@ module Pindo
|
|
|
85
85
|
))
|
|
86
86
|
|
|
87
87
|
# 合并 JPSOptions
|
|
88
|
-
items.concat(Pindo::Options::JPSOptions.select(:
|
|
88
|
+
items.concat(Pindo::Options::JPSOptions.select(:conf, :upload, :send))
|
|
89
89
|
|
|
90
90
|
items
|
|
91
91
|
end
|
|
@@ -109,7 +109,7 @@ module Pindo
|
|
|
109
109
|
# JPS 参数
|
|
110
110
|
@args_upload_flag = @options[:send] || @options[:upload]
|
|
111
111
|
@args_send_flag = @options[:send]
|
|
112
|
-
@
|
|
112
|
+
@args_conf = @options[:conf]
|
|
113
113
|
|
|
114
114
|
# 证书快捷参数
|
|
115
115
|
@args_adhoc_flag = @options[:adhoc]
|
|
@@ -294,13 +294,10 @@ module Pindo
|
|
|
294
294
|
# 只使用命令行参数的 proj_name,不从 config.json 获取
|
|
295
295
|
# skip_config_file: true 会跳过从 config.json 读取项目名称
|
|
296
296
|
# 这样如果用户没有指定 --proj,会直接提示用户输入
|
|
297
|
-
proj_name = @args_proj_name
|
|
298
|
-
|
|
299
297
|
app_info_obj, workflow_info = PgyerHelper.share_instace.get_adhoc_upload_info(
|
|
300
298
|
working_directory: Dir.pwd,
|
|
301
299
|
package_type: 'ipa',
|
|
302
|
-
|
|
303
|
-
skip_config_file: true
|
|
300
|
+
conf: @args_conf
|
|
304
301
|
)
|
|
305
302
|
return [app_info_obj, workflow_info]
|
|
306
303
|
end
|
|
@@ -339,7 +336,7 @@ module Pindo
|
|
|
339
336
|
resigned_ipa_file, # upload_file(明确指定重签名后的文件)
|
|
340
337
|
app_info_obj: app_info_obj,
|
|
341
338
|
workflow_info: workflow_info,
|
|
342
|
-
project_name:
|
|
339
|
+
project_name: nil,
|
|
343
340
|
upload_desc: "重签名包", # 上传描述
|
|
344
341
|
context: {
|
|
345
342
|
send_to_chat: @args_send_flag
|
|
@@ -100,7 +100,7 @@ module Pindo
|
|
|
100
100
|
def self.option_items
|
|
101
101
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
102
102
|
Pindo::Options::BuildOptions.select(:bundleid, :build_type),
|
|
103
|
-
Pindo::Options::JPSOptions.select(:
|
|
103
|
+
Pindo::Options::JPSOptions.select(:conf, :upload, :media, :bind, :send),
|
|
104
104
|
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
|
|
105
105
|
Pindo::Options::UnityOptions.select_with_defaults(skipconfig: true),
|
|
106
106
|
Pindo::Options::TaskOptions.select(:multi),
|
|
@@ -117,7 +117,7 @@ module Pindo
|
|
|
117
117
|
@options = initialize_options(argv)
|
|
118
118
|
|
|
119
119
|
# 保存参数到实例变量
|
|
120
|
-
@
|
|
120
|
+
@args_conf = @options[:conf]
|
|
121
121
|
@args_bundle_id = @options[:bundleid]
|
|
122
122
|
@build_type = @options[:build_type] || 'dev'
|
|
123
123
|
|
|
@@ -273,7 +273,7 @@ module Pindo
|
|
|
273
273
|
|
|
274
274
|
# 2.3 Unity 导出任务(依赖上一个任务)
|
|
275
275
|
unity_context = {}
|
|
276
|
-
unity_context[:project_name] =
|
|
276
|
+
unity_context[:project_name] = nil
|
|
277
277
|
|
|
278
278
|
unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
|
|
279
279
|
'ios',
|
|
@@ -299,7 +299,6 @@ module Pindo
|
|
|
299
299
|
build_options = {
|
|
300
300
|
project_path: ios_project_path,
|
|
301
301
|
bundle_id: config[:bundle_id],
|
|
302
|
-
proj_name: @args_proj_name,
|
|
303
302
|
app_info_obj: config[:app_info_obj],
|
|
304
303
|
workflow_info: config[:workflow_info],
|
|
305
304
|
# Git 版本参数
|
|
@@ -339,7 +338,7 @@ module Pindo
|
|
|
339
338
|
nil,
|
|
340
339
|
app_info_obj: config[:app_info_obj],
|
|
341
340
|
workflow_info: config[:workflow_info],
|
|
342
|
-
project_name:
|
|
341
|
+
project_name: nil
|
|
343
342
|
)
|
|
344
343
|
upload_task.dependencies << build_task.id
|
|
345
344
|
tasks << upload_task
|
|
@@ -349,7 +348,7 @@ module Pindo
|
|
|
349
348
|
message_task = Pindo::TaskSystem::JPSMessageTask.new(
|
|
350
349
|
nil, # app_version_info 为 nil,从依赖任务获取
|
|
351
350
|
app_info_obj: config[:app_info_obj],
|
|
352
|
-
project_name:
|
|
351
|
+
project_name: nil,
|
|
353
352
|
send_message_type: 'self' # 固定发送给自己
|
|
354
353
|
)
|
|
355
354
|
message_task.dependencies << upload_task.id
|
|
@@ -362,7 +361,7 @@ module Pindo
|
|
|
362
361
|
# 获取 Git 管理类型的工作流(不同于 IPA 上传的工作流)
|
|
363
362
|
git_app_info_obj, git_workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
364
363
|
working_directory: config[:project_path],
|
|
365
|
-
|
|
364
|
+
conf: @args_conf,
|
|
366
365
|
package_type: nil, # package_type 在 manage_type=git 时会被忽略
|
|
367
366
|
manage_type: "git"
|
|
368
367
|
)
|
|
@@ -372,7 +371,7 @@ module Pindo
|
|
|
372
371
|
config[:project_path], # upload_path
|
|
373
372
|
app_info_obj: git_app_info_obj,
|
|
374
373
|
workflow_info: git_workflow_info,
|
|
375
|
-
project_name:
|
|
374
|
+
project_name: nil
|
|
376
375
|
)
|
|
377
376
|
# 依赖 Git 提交任务
|
|
378
377
|
media_upload_task.dependencies << git_commit_task.id
|
|
@@ -394,7 +393,7 @@ module Pindo
|
|
|
394
393
|
project_dir: config[:project_path],
|
|
395
394
|
app_info_obj: config[:app_info_obj],
|
|
396
395
|
workflow_info: config[:workflow_info],
|
|
397
|
-
project_name:
|
|
396
|
+
project_name: nil
|
|
398
397
|
)
|
|
399
398
|
# 依赖上传任务和 Git 提交任务
|
|
400
399
|
bind_package_task.dependencies << upload_task.id
|
|
@@ -407,7 +406,7 @@ module Pindo
|
|
|
407
406
|
# 获取 Git 工作流信息
|
|
408
407
|
git_app_info_obj, git_workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
409
408
|
working_directory: config[:project_path],
|
|
410
|
-
|
|
409
|
+
conf: @args_conf,
|
|
411
410
|
package_type: nil,
|
|
412
411
|
manage_type: "git"
|
|
413
412
|
)
|
|
@@ -449,7 +448,7 @@ module Pindo
|
|
|
449
448
|
|
|
450
449
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
451
450
|
working_directory: pindo_project_dir,
|
|
452
|
-
|
|
451
|
+
conf: @args_conf,
|
|
453
452
|
package_type: package_type
|
|
454
453
|
)
|
|
455
454
|
|
|
@@ -82,7 +82,7 @@ module Pindo
|
|
|
82
82
|
))
|
|
83
83
|
|
|
84
84
|
# 合并 JPSOptions
|
|
85
|
-
items.concat(Pindo::Options::JPSOptions.select(:
|
|
85
|
+
items.concat(Pindo::Options::JPSOptions.select(:conf, :upload, :send))
|
|
86
86
|
|
|
87
87
|
items
|
|
88
88
|
end
|
|
@@ -109,7 +109,7 @@ module Pindo
|
|
|
109
109
|
# JPS 参数(从 options 中获取)
|
|
110
110
|
@args_upload_flag = @options[:upload]
|
|
111
111
|
@args_send_flag = @options[:send]
|
|
112
|
-
@
|
|
112
|
+
@args_conf = @options[:conf]
|
|
113
113
|
|
|
114
114
|
# 如果设置了 send,自动启用 upload
|
|
115
115
|
if @args_send_flag
|
|
@@ -279,13 +279,12 @@ module Pindo
|
|
|
279
279
|
# 准备 JPS 配置
|
|
280
280
|
def prepare_jps_config
|
|
281
281
|
if @args_upload_flag
|
|
282
|
-
proj_name = @args_proj_name
|
|
283
282
|
# 根据 Xcode 工程类型动态设置 package_type(macOS 工程使用 'mac',否则使用 'ipa')
|
|
284
283
|
is_macos = Pindo::BuildHelper.share_instance.macos_project?(Dir.pwd)
|
|
285
284
|
package_type = is_macos ? 'mac' : 'ipa'
|
|
286
285
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
287
286
|
working_directory: Dir.pwd,
|
|
288
|
-
|
|
287
|
+
conf: @args_conf,
|
|
289
288
|
package_type: package_type
|
|
290
289
|
)
|
|
291
290
|
return [app_info_obj, workflow_info]
|
|
@@ -329,7 +328,7 @@ module Pindo
|
|
|
329
328
|
resigned_ipa_file,
|
|
330
329
|
app_info_obj: app_info_obj,
|
|
331
330
|
workflow_info: workflow_info,
|
|
332
|
-
project_name:
|
|
331
|
+
project_name: nil,
|
|
333
332
|
upload_desc: "重签名包",
|
|
334
333
|
context: {
|
|
335
334
|
send_to_chat: @args_send_flag
|
|
@@ -37,7 +37,7 @@ module Pindo
|
|
|
37
37
|
# 定义此命令使用的参数项
|
|
38
38
|
def self.option_items
|
|
39
39
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
40
|
-
Pindo::Options::JPSOptions.select(:
|
|
40
|
+
Pindo::Options::JPSOptions.select(:conf, :send, :list, :group)
|
|
41
41
|
)
|
|
42
42
|
end
|
|
43
43
|
|
|
@@ -50,7 +50,7 @@ module Pindo
|
|
|
50
50
|
@options = initialize_options(argv)
|
|
51
51
|
|
|
52
52
|
# JPS 参数
|
|
53
|
-
@
|
|
53
|
+
@args_conf = @options[:conf]
|
|
54
54
|
@args_list_flag = @options[:list] || false
|
|
55
55
|
@args_send_flag = @options[:send] || false
|
|
56
56
|
@args_group_flag = @options[:group] || false
|
|
@@ -71,12 +71,12 @@ module Pindo
|
|
|
71
71
|
|
|
72
72
|
app_info_obj, workflow_info = pgyer_helper.prepare_upload(
|
|
73
73
|
working_directory: project_path,
|
|
74
|
-
|
|
74
|
+
conf: @args_conf,
|
|
75
75
|
package_type: 'ipa' # 获取 IPA 工作流信息
|
|
76
76
|
)
|
|
77
77
|
|
|
78
78
|
if app_info_obj.nil?
|
|
79
|
-
raise Informative, "
|
|
79
|
+
raise Informative, "未找到 JPS 项目,请检查配置文件或重新选择"
|
|
80
80
|
end
|
|
81
81
|
|
|
82
82
|
# 2. 获取版本信息
|
|
@@ -103,7 +103,7 @@ module Pindo
|
|
|
103
103
|
message_task = Pindo::TaskSystem::JPSMessageTask.new(
|
|
104
104
|
version_item_obj, # app_version_info
|
|
105
105
|
app_info_obj: app_info_obj,
|
|
106
|
-
project_name:
|
|
106
|
+
project_name: nil,
|
|
107
107
|
send_message_type: message_type
|
|
108
108
|
)
|
|
109
109
|
tasks << message_task
|
|
@@ -113,7 +113,7 @@ module Pindo
|
|
|
113
113
|
# 获取 Git 工作流信息
|
|
114
114
|
git_app_info_obj, git_workflow_info = pgyer_helper.prepare_upload(
|
|
115
115
|
working_directory: project_path,
|
|
116
|
-
|
|
116
|
+
conf: @args_conf,
|
|
117
117
|
package_type: nil,
|
|
118
118
|
manage_type: "git"
|
|
119
119
|
)
|
|
@@ -37,7 +37,7 @@ module Pindo
|
|
|
37
37
|
# 定义此命令使用的参数项
|
|
38
38
|
def self.option_items
|
|
39
39
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
40
|
-
Pindo::Options::JPSOptions.select(:
|
|
40
|
+
Pindo::Options::JPSOptions.select(:conf),
|
|
41
41
|
Pindo::Options::TaskOptions.select(:select),
|
|
42
42
|
Pindo::Options::GitOptions.all
|
|
43
43
|
)
|
|
@@ -52,7 +52,7 @@ module Pindo
|
|
|
52
52
|
@options = initialize_options(argv)
|
|
53
53
|
|
|
54
54
|
# JPS 参数
|
|
55
|
-
@
|
|
55
|
+
@args_conf = @options[:conf]
|
|
56
56
|
|
|
57
57
|
# Task 参数
|
|
58
58
|
@args_select_flag = @options[:select] || false
|
|
@@ -93,13 +93,13 @@ module Pindo
|
|
|
93
93
|
|
|
94
94
|
app_info_obj, git_workflow_info = pgyer_helper.prepare_upload(
|
|
95
95
|
working_directory: project_path,
|
|
96
|
-
|
|
96
|
+
conf: @args_conf,
|
|
97
97
|
package_type: nil,
|
|
98
98
|
manage_type: "git"
|
|
99
99
|
)
|
|
100
100
|
|
|
101
101
|
if app_info_obj.nil?
|
|
102
|
-
raise Informative, "
|
|
102
|
+
raise Informative, "未找到 JPS 项目,请检查配置文件或重新选择"
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
project_id = app_info_obj["id"]
|
|
@@ -153,7 +153,7 @@ module Pindo
|
|
|
153
153
|
project_dir: project_path,
|
|
154
154
|
app_info_obj: app_info_obj,
|
|
155
155
|
workflow_info: git_workflow_info,
|
|
156
|
-
project_name:
|
|
156
|
+
project_name: nil
|
|
157
157
|
}
|
|
158
158
|
)
|
|
159
159
|
bind_task.dependencies << git_commit_task.id
|
|
@@ -38,7 +38,7 @@ module Pindo
|
|
|
38
38
|
[
|
|
39
39
|
['--login', '强制再次登录jps网站'],
|
|
40
40
|
['--list', '列出上传记录并选择,用法:pindo jps download --list'],
|
|
41
|
-
['--
|
|
41
|
+
['--conf', '指定 JPSBuildConfig.json 配置文件路径,用法:pindo jps download --conf=./JPSBuildConfig.json'],
|
|
42
42
|
].concat(super)
|
|
43
43
|
end
|
|
44
44
|
|
|
@@ -47,7 +47,7 @@ module Pindo
|
|
|
47
47
|
|
|
48
48
|
@args_login_flag = argv.flag?('login', false)
|
|
49
49
|
@args_list_flag = argv.flag?('list', false)
|
|
50
|
-
@
|
|
50
|
+
@args_conf = argv.option('conf')
|
|
51
51
|
@app_version_index = argv.option('index') || nil
|
|
52
52
|
|
|
53
53
|
super(argv)
|
|
@@ -62,10 +62,10 @@ module Pindo
|
|
|
62
62
|
def run
|
|
63
63
|
|
|
64
64
|
PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
|
|
65
|
-
app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd,
|
|
65
|
+
app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, conf:@args_conf)
|
|
66
66
|
|
|
67
67
|
if app_info_obj.nil?
|
|
68
|
-
raise Informative, "
|
|
68
|
+
raise Informative, "未找到 JPS 项目,请检查配置文件或重新选择"
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
|
|
@@ -44,7 +44,7 @@ module Pindo
|
|
|
44
44
|
# 定义此命令使用的参数项
|
|
45
45
|
def self.option_items
|
|
46
46
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
47
|
-
Pindo::Options::JPSOptions.select(:
|
|
47
|
+
Pindo::Options::JPSOptions.select(:conf),
|
|
48
48
|
Pindo::Options::TaskOptions.select(:select),
|
|
49
49
|
Pindo::Options::GitOptions.all
|
|
50
50
|
)
|
|
@@ -65,7 +65,7 @@ module Pindo
|
|
|
65
65
|
@options = initialize_options(argv)
|
|
66
66
|
|
|
67
67
|
# JPS 参数
|
|
68
|
-
@
|
|
68
|
+
@args_conf = @options[:conf]
|
|
69
69
|
|
|
70
70
|
# Task 参数
|
|
71
71
|
@args_select_flag = @options[:select] || false
|
|
@@ -104,13 +104,13 @@ module Pindo
|
|
|
104
104
|
# 使用 manage_type: "git" 来获取 git 管理类型的工作流
|
|
105
105
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
106
106
|
working_directory: project_path,
|
|
107
|
-
|
|
107
|
+
conf: @args_conf,
|
|
108
108
|
package_type: nil, # package_type 在 manage_type=git 时会被忽略
|
|
109
109
|
manage_type: "git"
|
|
110
110
|
)
|
|
111
111
|
|
|
112
112
|
if app_info_obj.nil?
|
|
113
|
-
raise Informative, "
|
|
113
|
+
raise Informative, "未找到 JPS 项目,请检查配置文件或重新选择"
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
# 获取 workflow_id
|
|
@@ -147,7 +147,7 @@ module Pindo
|
|
|
147
147
|
project_path, # upload_path
|
|
148
148
|
app_info_obj: app_info_obj,
|
|
149
149
|
workflow_info: workflow_info,
|
|
150
|
-
project_name:
|
|
150
|
+
project_name: nil,
|
|
151
151
|
git_commit_id: selected_commit_info&.dig(:commit_id),
|
|
152
152
|
git_commit_time: selected_commit_info&.dig(:commit_time),
|
|
153
153
|
git_commit_desc: selected_commit_info&.dig(:commit_desc)
|
|
@@ -40,7 +40,7 @@ module Pindo
|
|
|
40
40
|
# 定义此命令使用的参数项
|
|
41
41
|
def self.option_items
|
|
42
42
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
43
|
-
Pindo::Options::JPSOptions.select(:
|
|
43
|
+
Pindo::Options::JPSOptions.select(:conf, :send, :list),
|
|
44
44
|
Pindo::Options::BuildOptions.select(:bundleid)
|
|
45
45
|
)
|
|
46
46
|
end
|
|
@@ -54,7 +54,7 @@ module Pindo
|
|
|
54
54
|
@options = initialize_options(argv)
|
|
55
55
|
|
|
56
56
|
# JPS 参数
|
|
57
|
-
@
|
|
57
|
+
@args_conf = @options[:conf]
|
|
58
58
|
@args_list_flag = @options[:list] || false
|
|
59
59
|
@args_send_flag = @options[:send] || false
|
|
60
60
|
|
|
@@ -80,12 +80,12 @@ module Pindo
|
|
|
80
80
|
|
|
81
81
|
# app_info_obj, workflow_info = pgyer_helper.prepare_upload(
|
|
82
82
|
# working_directory: project_path,
|
|
83
|
-
#
|
|
83
|
+
# conf: @args_conf,
|
|
84
84
|
# package_type: 'ipa' # 获取 IPA 工作流信息
|
|
85
85
|
# )
|
|
86
86
|
|
|
87
87
|
# if app_info_obj.nil?
|
|
88
|
-
# raise Informative, "
|
|
88
|
+
# raise Informative, "未找到 JPS 项目,请检查配置文件或重新选择"
|
|
89
89
|
# end
|
|
90
90
|
|
|
91
91
|
# # 2. 创建任务
|
|
@@ -94,7 +94,7 @@ module Pindo
|
|
|
94
94
|
# # 2.1 创建重签名任务
|
|
95
95
|
# resign_task = Pindo::TaskSystem::JPSResignTask.new(
|
|
96
96
|
# app_info_obj: app_info_obj,
|
|
97
|
-
# project_name:
|
|
97
|
+
# project_name: nil,
|
|
98
98
|
# cert_id: @args_bundle_id, # 使用 bundleid 参数
|
|
99
99
|
# list_flag: @args_list_flag
|
|
100
100
|
# )
|
|
@@ -104,7 +104,7 @@ module Pindo
|
|
|
104
104
|
# message_task = Pindo::TaskSystem::JPSMessageTask.new(
|
|
105
105
|
# nil, # app_version_info 为 nil,从依赖任务获取
|
|
106
106
|
# app_info_obj: app_info_obj,
|
|
107
|
-
# project_name:
|
|
107
|
+
# project_name: nil,
|
|
108
108
|
# send_message_type: 'self',
|
|
109
109
|
# dependencies: [resign_task.id]
|
|
110
110
|
# )
|
|
@@ -115,7 +115,7 @@ module Pindo
|
|
|
115
115
|
# # 获取 Git 工作流信息
|
|
116
116
|
# git_app_info_obj, git_workflow_info = pgyer_helper.prepare_upload(
|
|
117
117
|
# working_directory: project_path,
|
|
118
|
-
#
|
|
118
|
+
# conf: @args_conf,
|
|
119
119
|
# package_type: "",
|
|
120
120
|
# manage_type: "git"
|
|
121
121
|
# )
|
|
@@ -59,7 +59,7 @@ module Pindo
|
|
|
59
59
|
# 定义此命令使用的参数项
|
|
60
60
|
def self.option_items
|
|
61
61
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
62
|
-
Pindo::Options::JPSOptions.select(:
|
|
62
|
+
Pindo::Options::JPSOptions.select(:conf, :send, :desc, :resign),
|
|
63
63
|
Pindo::Options::GitOptions.all
|
|
64
64
|
)
|
|
65
65
|
end
|
|
@@ -91,7 +91,7 @@ module Pindo
|
|
|
91
91
|
@options = initialize_options(argv)
|
|
92
92
|
|
|
93
93
|
# JPS 参数
|
|
94
|
-
@
|
|
94
|
+
@args_conf = @options[:conf]
|
|
95
95
|
@args_send_flag = @options[:send] || false
|
|
96
96
|
@args_resign_flag = @options[:resign] || false
|
|
97
97
|
@args_upload_desc = @options[:desc]
|
|
@@ -145,8 +145,8 @@ module Pindo
|
|
|
145
145
|
if !@args_cert_id.nil? && !@args_cert_id.empty?
|
|
146
146
|
args << "--certid=#{@args_cert_id}"
|
|
147
147
|
end
|
|
148
|
-
if !@
|
|
149
|
-
args << "--
|
|
148
|
+
if !@args_conf.nil? && !@args_conf.empty?
|
|
149
|
+
args << "--conf=#{@args_conf}"
|
|
150
150
|
end
|
|
151
151
|
Pindo::Command::Jps::Resign::run(args)
|
|
152
152
|
end
|
|
@@ -196,7 +196,7 @@ module Pindo
|
|
|
196
196
|
message_task = Pindo::TaskSystem::JPSMessageTask.new(
|
|
197
197
|
nil, # app_version_info 为 nil,从 upload_task 依赖任务获取
|
|
198
198
|
app_info_obj: upload_task.app_info_obj,
|
|
199
|
-
project_name:
|
|
199
|
+
project_name: nil,
|
|
200
200
|
send_message_type: @args_send_flag ? 'group' : 'self',
|
|
201
201
|
dependencies: [upload_task.id] # 依赖对应的上传任务
|
|
202
202
|
)
|
|
@@ -477,12 +477,12 @@ module Pindo
|
|
|
477
477
|
# 提前获取 JPS 配置(app_info_obj 和 workflow_info)
|
|
478
478
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
479
479
|
working_directory: Dir.pwd,
|
|
480
|
-
|
|
480
|
+
conf: @args_conf,
|
|
481
481
|
package_type: package_type
|
|
482
482
|
)
|
|
483
483
|
|
|
484
484
|
if app_info_obj.nil?
|
|
485
|
-
raise Informative, "
|
|
485
|
+
raise Informative, "未找到 JPS 项目,请检查配置文件或重新选择"
|
|
486
486
|
end
|
|
487
487
|
|
|
488
488
|
# 创建 JPSUploadTask
|
|
@@ -492,7 +492,7 @@ module Pindo
|
|
|
492
492
|
upload_file,
|
|
493
493
|
app_info_obj: app_info_obj,
|
|
494
494
|
workflow_info: workflow_info,
|
|
495
|
-
project_name:
|
|
495
|
+
project_name: nil,
|
|
496
496
|
upload_desc: @args_upload_desc,
|
|
497
497
|
context: {
|
|
498
498
|
send_to_chat: @args_send_flag
|
|
@@ -100,7 +100,7 @@ module Pindo
|
|
|
100
100
|
def self.option_items
|
|
101
101
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
102
102
|
Pindo::Options::BuildOptions.select(:bundleid, :bundle_name), # 添加 bundleid 和 bundle_name 参数
|
|
103
|
-
Pindo::Options::JPSOptions.select(:
|
|
103
|
+
Pindo::Options::JPSOptions.select(:conf, :upload, :send, :media, :bind),
|
|
104
104
|
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
|
|
105
105
|
Pindo::Options::UnityOptions.select_with_defaults(skipconfig: true),
|
|
106
106
|
Pindo::Options::TaskOptions.select(:multi),
|
|
@@ -122,7 +122,7 @@ module Pindo
|
|
|
122
122
|
def initialize(argv)
|
|
123
123
|
@options = initialize_options(argv)
|
|
124
124
|
|
|
125
|
-
@
|
|
125
|
+
@args_conf = @options[:conf]
|
|
126
126
|
@args_adhoc_flag = argv.flag?('adhoc', false)
|
|
127
127
|
@args_deploy_flag = argv.flag?('deploy', false)
|
|
128
128
|
@args_release_flag = argv.flag?('release', false)
|
|
@@ -360,7 +360,7 @@ module Pindo
|
|
|
360
360
|
# 获取 Git 工作流信息(media、绑定、消息任务都需要)
|
|
361
361
|
git_app_info_obj, git_workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
362
362
|
working_directory: Dir.pwd,
|
|
363
|
-
|
|
363
|
+
conf: @args_conf,
|
|
364
364
|
package_type: nil, # package_type 在 manage_type=git 时会被忽略
|
|
365
365
|
manage_type: "git"
|
|
366
366
|
)
|
|
@@ -474,7 +474,6 @@ module Pindo
|
|
|
474
474
|
|
|
475
475
|
# 准备构建选项
|
|
476
476
|
build_options = {
|
|
477
|
-
proj_name: all_platform_configs["project_name"],
|
|
478
477
|
app_info_obj: all_platform_configs["app_info_obj"], # 共享的项目信息
|
|
479
478
|
workflow_info: platform_config["workflow_info"], # 平台特定的工作流
|
|
480
479
|
project_path: platform_path,
|
|
@@ -581,7 +580,7 @@ module Pindo
|
|
|
581
580
|
# 获取当前平台的 JPS 配置
|
|
582
581
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
583
582
|
working_directory: Dir.pwd,
|
|
584
|
-
|
|
583
|
+
conf: @args_conf,
|
|
585
584
|
package_type: package_type
|
|
586
585
|
)
|
|
587
586
|
|
|
@@ -93,7 +93,7 @@ module Pindo
|
|
|
93
93
|
def self.option_items
|
|
94
94
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
95
95
|
Pindo::Options::BuildOptions.select(:bundleid), # 添加 bundleid 参数
|
|
96
|
-
Pindo::Options::JPSOptions.select(:
|
|
96
|
+
Pindo::Options::JPSOptions.select(:conf, :upload, :send, :media, :bind),
|
|
97
97
|
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
|
|
98
98
|
Pindo::Options::UnityOptions.select_with_defaults(skipconfig: true),
|
|
99
99
|
Pindo::Options::TaskOptions.select(:multi),
|
|
@@ -113,7 +113,7 @@ module Pindo
|
|
|
113
113
|
|
|
114
114
|
@args_deploy_flag = argv.flag?('deploy', false)
|
|
115
115
|
@args_adhoc_flag = argv.flag?('adhoc', false)
|
|
116
|
-
@
|
|
116
|
+
@args_conf = @options[:conf]
|
|
117
117
|
@args_bundle_id = @options[:bundleid] # 从 @options 获取,确保能被缓存
|
|
118
118
|
@args_run_flag = argv.flag?('run', false)
|
|
119
119
|
|
|
@@ -188,7 +188,7 @@ module Pindo
|
|
|
188
188
|
# 获取 JPS 配置
|
|
189
189
|
app_info_obj, workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
190
190
|
working_directory: pindo_project_dir,
|
|
191
|
-
|
|
191
|
+
conf: @args_conf,
|
|
192
192
|
package_type: 'zip'
|
|
193
193
|
)
|
|
194
194
|
|
|
@@ -303,7 +303,7 @@ module Pindo
|
|
|
303
303
|
web_export_path = File.join(config[:project_path], "GoodPlatform", "WebGL")
|
|
304
304
|
|
|
305
305
|
unity_context = {}
|
|
306
|
-
unity_context[:project_name] =
|
|
306
|
+
unity_context[:project_name] = nil
|
|
307
307
|
unity_context[:index_count] = config[:index_count]
|
|
308
308
|
|
|
309
309
|
unity_export_task = Pindo::TaskSystem::UnityExportTask.new(
|
|
@@ -321,7 +321,7 @@ module Pindo
|
|
|
321
321
|
mode: :dev,
|
|
322
322
|
options: {
|
|
323
323
|
project_path: config[:project_path],
|
|
324
|
-
|
|
324
|
+
conf: @args_conf,
|
|
325
325
|
app_info_obj: config[:app_info_obj],
|
|
326
326
|
workflow_info: config[:workflow_info]
|
|
327
327
|
}
|
|
@@ -342,7 +342,7 @@ module Pindo
|
|
|
342
342
|
nil,
|
|
343
343
|
app_info_obj: config[:app_info_obj],
|
|
344
344
|
workflow_info: config[:workflow_info],
|
|
345
|
-
project_name:
|
|
345
|
+
project_name: nil
|
|
346
346
|
)
|
|
347
347
|
upload_task.dependencies << build_task.id
|
|
348
348
|
tasks << upload_task
|
|
@@ -352,7 +352,7 @@ module Pindo
|
|
|
352
352
|
message_task = Pindo::TaskSystem::JPSMessageTask.new(
|
|
353
353
|
nil, # app_version_info 为 nil,从依赖任务获取
|
|
354
354
|
app_info_obj: config[:app_info_obj],
|
|
355
|
-
project_name:
|
|
355
|
+
project_name: nil,
|
|
356
356
|
send_message_type: 'self' # 固定发送给自己
|
|
357
357
|
)
|
|
358
358
|
message_task.dependencies << upload_task.id
|
|
@@ -364,7 +364,7 @@ module Pindo
|
|
|
364
364
|
# 获取 Git 管理类型的工作流(不同于 HTML 上传的工作流)
|
|
365
365
|
git_app_info_obj, git_workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
366
366
|
working_directory: config[:project_path],
|
|
367
|
-
|
|
367
|
+
conf: @args_conf,
|
|
368
368
|
package_type: nil, # package_type 在 manage_type=git 时会被忽略
|
|
369
369
|
manage_type: "git"
|
|
370
370
|
)
|
|
@@ -374,7 +374,7 @@ module Pindo
|
|
|
374
374
|
config[:project_path], # upload_path
|
|
375
375
|
app_info_obj: git_app_info_obj,
|
|
376
376
|
workflow_info: git_workflow_info,
|
|
377
|
-
project_name:
|
|
377
|
+
project_name: nil
|
|
378
378
|
)
|
|
379
379
|
# 依赖 Git 提交任务
|
|
380
380
|
media_upload_task.dependencies << git_commit_task.id
|
|
@@ -389,7 +389,7 @@ module Pindo
|
|
|
389
389
|
project_dir: config[:project_path],
|
|
390
390
|
app_info_obj: config[:app_info_obj],
|
|
391
391
|
workflow_info: config[:workflow_info],
|
|
392
|
-
project_name:
|
|
392
|
+
project_name: nil
|
|
393
393
|
)
|
|
394
394
|
# 依赖上传任务和 Git 提交任务
|
|
395
395
|
bind_package_task.dependencies << upload_task.id
|
|
@@ -402,7 +402,7 @@ module Pindo
|
|
|
402
402
|
# 获取 Git 工作流信息
|
|
403
403
|
git_app_info_obj, git_workflow_info = PgyerHelper.share_instace.prepare_upload(
|
|
404
404
|
working_directory: config[:project_path],
|
|
405
|
-
|
|
405
|
+
conf: @args_conf,
|
|
406
406
|
package_type: nil,
|
|
407
407
|
manage_type: "git"
|
|
408
408
|
)
|
|
@@ -55,10 +55,10 @@ module Pindo
|
|
|
55
55
|
# - project_name [String] 项目名称
|
|
56
56
|
# - project_id [String] 项目ID
|
|
57
57
|
# - workflow_info [Hash] 工作流信息(如果有效)
|
|
58
|
-
def try_load_jps_build_config(
|
|
58
|
+
def try_load_jps_build_config(config_file:, package_type:, manage_type: "")
|
|
59
59
|
if ENV['PINDO_DEBUG']
|
|
60
60
|
puts "\n[PINDO_DEBUG] try_load_jps_build_config 调用:"
|
|
61
|
-
puts "
|
|
61
|
+
puts " config_file: #{config_file}"
|
|
62
62
|
puts " package_type: #{package_type.inspect}"
|
|
63
63
|
puts " manage_type: #{manage_type.inspect}"
|
|
64
64
|
end
|
|
@@ -70,9 +70,6 @@ module Pindo
|
|
|
70
70
|
workflow_info: nil
|
|
71
71
|
}
|
|
72
72
|
|
|
73
|
-
# 1. 确定配置文件路径
|
|
74
|
-
config_file = determine_config_file_path(working_directory)
|
|
75
|
-
|
|
76
73
|
if ENV['PINDO_DEBUG']
|
|
77
74
|
puts "[PINDO_DEBUG] 配置文件路径: #{config_file}"
|
|
78
75
|
puts "[PINDO_DEBUG] 文件存在: #{File.exist?(config_file)}"
|
|
@@ -392,17 +389,28 @@ module Pindo
|
|
|
392
389
|
# @param proj_name [String] 项目名称(可选)
|
|
393
390
|
# @param skip_config_file [Boolean] 是否跳过从 config.json 获取项目名称(默认 false)
|
|
394
391
|
# @return [Array] [app_info_obj, workflow_info]
|
|
395
|
-
def get_adhoc_upload_info(working_directory:, package_type:,
|
|
396
|
-
|
|
392
|
+
def get_adhoc_upload_info(working_directory:, package_type:, conf: nil)
|
|
393
|
+
# 确定配置文件路径
|
|
394
|
+
config_path = if conf && !conf.empty?
|
|
395
|
+
File.expand_path(conf)
|
|
396
|
+
else
|
|
397
|
+
determine_config_file_path(working_directory)
|
|
398
|
+
end
|
|
397
399
|
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
400
|
+
upload_proj_name = nil
|
|
401
|
+
|
|
402
|
+
# 尝试从配置文件读取项目名称
|
|
403
|
+
if File.exist?(config_path)
|
|
404
|
+
begin
|
|
405
|
+
config = JSON.parse(File.read(config_path))
|
|
406
|
+
upload_proj_name = config['project_name']
|
|
407
|
+
rescue => e
|
|
408
|
+
puts "[get_adhoc_upload_info] 配置文件解析失败: #{e.message}"
|
|
409
|
+
end
|
|
402
410
|
end
|
|
403
411
|
|
|
404
|
-
#
|
|
405
|
-
if
|
|
412
|
+
# 配置文件中没有,从 IosConfigParser 获取
|
|
413
|
+
if upload_proj_name.nil? || upload_proj_name.empty?
|
|
406
414
|
require 'pindo/config/ios_config_parser'
|
|
407
415
|
config_parser = Pindo::IosConfigParser.instance
|
|
408
416
|
if config_parser.config_json
|
|
@@ -410,7 +418,7 @@ module Pindo
|
|
|
410
418
|
end
|
|
411
419
|
end
|
|
412
420
|
|
|
413
|
-
#
|
|
421
|
+
# 仍为空,让用户输入
|
|
414
422
|
if upload_proj_name.nil? || upload_proj_name.empty?
|
|
415
423
|
require 'highline/import'
|
|
416
424
|
puts "\n未找到项目名称配置"
|
|
@@ -421,12 +429,12 @@ module Pindo
|
|
|
421
429
|
upload_proj_name = upload_proj_name.strip if upload_proj_name
|
|
422
430
|
end
|
|
423
431
|
|
|
424
|
-
#
|
|
432
|
+
# 确保已登录
|
|
425
433
|
unless login
|
|
426
434
|
raise Informative, "请先登录 JPS 网站"
|
|
427
435
|
end
|
|
428
436
|
|
|
429
|
-
#
|
|
437
|
+
# 获取 app_info_obj
|
|
430
438
|
app_info_obj = find_app_info_with_obj_list(proj_name: upload_proj_name)
|
|
431
439
|
|
|
432
440
|
unless app_info_obj
|
|
@@ -454,34 +462,30 @@ module Pindo
|
|
|
454
462
|
return app_info_obj, workflow_info
|
|
455
463
|
end
|
|
456
464
|
|
|
457
|
-
def prepare_upload(working_directory:nil,
|
|
465
|
+
def prepare_upload(working_directory:nil, conf:nil, package_type:nil, manage_type: "")
|
|
466
|
+
working_directory ||= Dir.pwd
|
|
467
|
+
|
|
458
468
|
if ENV['PINDO_DEBUG']
|
|
459
469
|
puts "\n[PINDO_DEBUG] prepare_upload 调用参数:"
|
|
460
470
|
puts " working_directory: #{working_directory}"
|
|
461
|
-
puts "
|
|
471
|
+
puts " conf: #{conf.inspect}"
|
|
462
472
|
puts " package_type: #{package_type.inspect}"
|
|
463
473
|
puts " manage_type: #{manage_type.inspect}"
|
|
464
474
|
end
|
|
465
475
|
|
|
466
|
-
|
|
467
|
-
if
|
|
468
|
-
|
|
476
|
+
# 确定配置文件路径:显式指定 > 工作目录自动检测 > 工程目录自动检测
|
|
477
|
+
config_path = if conf && !conf.empty?
|
|
478
|
+
File.expand_path(conf)
|
|
479
|
+
else
|
|
480
|
+
determine_config_file_path(working_directory)
|
|
469
481
|
end
|
|
470
482
|
|
|
471
|
-
#
|
|
472
|
-
env_project_name = ENV['PINDO_PROJECT_NAME']
|
|
473
|
-
if env_project_name && !env_project_name.empty?
|
|
474
|
-
upload_proj_name = env_project_name
|
|
475
|
-
puts "\n使用环境变量指定的项目名称: #{upload_proj_name}"
|
|
476
|
-
puts
|
|
477
|
-
end
|
|
483
|
+
puts "[PINDO_DEBUG] 使用配置文件: #{config_path}" if ENV['PINDO_DEBUG']
|
|
478
484
|
|
|
479
|
-
#
|
|
485
|
+
# 尝试从配置文件加载
|
|
480
486
|
if package_type || manage_type
|
|
481
|
-
puts "[PINDO_DEBUG] 准备加载配置文件 (package_type=#{package_type.inspect}, manage_type=#{manage_type.inspect})" if ENV['PINDO_DEBUG']
|
|
482
|
-
|
|
483
487
|
config_result = try_load_jps_build_config(
|
|
484
|
-
|
|
488
|
+
config_file: config_path,
|
|
485
489
|
package_type: package_type,
|
|
486
490
|
manage_type: manage_type
|
|
487
491
|
)
|
|
@@ -489,7 +493,6 @@ module Pindo
|
|
|
489
493
|
puts "[PINDO_DEBUG] 配置加载结果: valid=#{config_result[:valid]}" if ENV['PINDO_DEBUG']
|
|
490
494
|
|
|
491
495
|
if config_result[:valid]
|
|
492
|
-
# 配置有效,直接使用
|
|
493
496
|
puts "\n使用 JPSBuildConfig.json 配置:"
|
|
494
497
|
puts " 项目: #{config_result[:project_name]}"
|
|
495
498
|
puts " 工作流: #{config_result[:workflow_info][:tab_name]}"
|
|
@@ -501,12 +504,10 @@ module Pindo
|
|
|
501
504
|
puts " workflow_info: #{config_result[:workflow_info].inspect}"
|
|
502
505
|
end
|
|
503
506
|
|
|
504
|
-
# 确保已登录
|
|
505
507
|
unless login
|
|
506
508
|
raise Informative, "请先登录JPS网站"
|
|
507
509
|
end
|
|
508
510
|
|
|
509
|
-
# 获取完整的 app_info_obj
|
|
510
511
|
puts "[PINDO_DEBUG] 正在查找项目: #{config_result[:project_name]}" if ENV['PINDO_DEBUG']
|
|
511
512
|
app_info_obj = find_app_info_with_obj_list(
|
|
512
513
|
proj_name: config_result[:project_name]
|
|
@@ -523,25 +524,15 @@ module Pindo
|
|
|
523
524
|
else
|
|
524
525
|
puts "[PINDO_DEBUG] 配置无效,进入交互选择流程" if ENV['PINDO_DEBUG']
|
|
525
526
|
end
|
|
526
|
-
else
|
|
527
|
-
puts "[PINDO_DEBUG] 跳过配置加载(package_type 和 manage_type 都为空)" if ENV['PINDO_DEBUG']
|
|
528
527
|
end
|
|
529
528
|
|
|
530
529
|
# ===== 配置无效或不存在,进入用户选择流程 =====
|
|
531
530
|
|
|
531
|
+
upload_proj_name = nil
|
|
532
532
|
app_info_obj = nil
|
|
533
533
|
if login
|
|
534
534
|
|
|
535
|
-
if !upload_proj_name.nil?
|
|
536
|
-
app_info_obj = PgyerHelper.share_instace.find_app_info_with_obj_list(proj_name:upload_proj_name)
|
|
537
|
-
end
|
|
538
|
-
|
|
539
535
|
if !app_info_obj.nil?
|
|
540
|
-
# 如果使用环境变量找到了项目,保存到 GlobalOptionsState
|
|
541
|
-
if env_project_name && !env_project_name.empty?
|
|
542
|
-
Pindo::Options::GlobalOptionsState.instance[:proj] = upload_proj_name
|
|
543
|
-
end
|
|
544
|
-
|
|
545
536
|
# 如果提供了 package_type 或 manage_type,选择工作流并保存配置
|
|
546
537
|
if package_type || manage_type
|
|
547
538
|
workflow_info = select_workflow_for_project(
|
|
@@ -618,16 +609,12 @@ module Pindo
|
|
|
618
609
|
proj_name_array.uniq
|
|
619
610
|
proj_name_array << "自定义输入JPS上的项目名称"
|
|
620
611
|
|
|
621
|
-
#
|
|
622
|
-
|
|
623
|
-
# 检查 GlobalOptionsState 缓存
|
|
624
|
-
cached_app_key = Pindo::Options::GlobalOptionsState.instance[:proj]
|
|
612
|
+
# 检查 GlobalOptionsState 缓存(上次交互选择的项目)
|
|
613
|
+
cached_app_key = Pindo::Options::GlobalOptionsState.instance[:proj]
|
|
625
614
|
|
|
626
|
-
|
|
627
|
-
|
|
628
|
-
|
|
629
|
-
# 直接使用缓存的选择,跳过后续选择逻辑
|
|
630
|
-
end
|
|
615
|
+
if cached_app_key && proj_name_array.include?(cached_app_key)
|
|
616
|
+
puts "\n使用之前选择的JPS项目: #{cached_app_key}"
|
|
617
|
+
upload_proj_name = cached_app_key
|
|
631
618
|
end
|
|
632
619
|
|
|
633
620
|
# 只有在没有缓存或缓存无效,且没有环境变量时才显示选择菜单
|
|
@@ -136,8 +136,7 @@ module Pindo
|
|
|
136
136
|
|
|
137
137
|
# 重签名任务不需要 package_type,只获取 app_info_obj
|
|
138
138
|
@app_info_obj = pgyer_helper.prepare_upload(
|
|
139
|
-
working_directory: working_directory
|
|
140
|
-
proj_name: @project_name
|
|
139
|
+
working_directory: working_directory
|
|
141
140
|
)
|
|
142
141
|
|
|
143
142
|
unless @app_info_obj
|
|
@@ -648,10 +648,12 @@ module Pindo
|
|
|
648
648
|
|
|
649
649
|
Dir.chdir(temp_dir)
|
|
650
650
|
|
|
651
|
-
# 过滤只保留符合规范的 commits
|
|
652
|
-
|
|
651
|
+
# 过滤只保留符合规范的 commits(支持带 scope 和不带 scope 格式)
|
|
652
|
+
# 匹配格式: feat:, feat(scope):, fix:, fix(api): 等
|
|
653
|
+
conventional_commit_regex = /^(feat|fix|docs|doc|perf|refactor|style|test|chore|revert)(\([^)]+\))?:/i
|
|
653
654
|
filtered_commits = commits.select do |commit|
|
|
654
|
-
|
|
655
|
+
first_line = commit.lines.first&.strip || ""
|
|
656
|
+
conventional_commit_regex.match?(first_line)
|
|
655
657
|
end
|
|
656
658
|
|
|
657
659
|
# 如果没有符合规范的 commits,返回默认消息
|
|
@@ -10,15 +10,15 @@ module Pindo
|
|
|
10
10
|
|
|
11
11
|
def self.all_options
|
|
12
12
|
@all_options ||= {
|
|
13
|
-
|
|
14
|
-
key: :
|
|
15
|
-
name: '
|
|
16
|
-
description: '
|
|
13
|
+
conf: OptionItem.new(
|
|
14
|
+
key: :conf,
|
|
15
|
+
name: '配置文件',
|
|
16
|
+
description: '指定 JPSBuildConfig.json 配置文件路径;不指定时自动从当前工作目录或工程目录查找',
|
|
17
17
|
type: String,
|
|
18
|
-
env_name: '
|
|
18
|
+
env_name: 'PINDO_CONF_PATH',
|
|
19
19
|
optional: true,
|
|
20
|
-
cacheable:
|
|
21
|
-
example: 'pindo ios autobuild --
|
|
20
|
+
cacheable: false,
|
|
21
|
+
example: 'pindo ios autobuild --conf=./JPSBuildConfig.json'
|
|
22
22
|
),
|
|
23
23
|
|
|
24
24
|
upload: OptionItem.new(
|
data/lib/pindo/version.rb
CHANGED
|
@@ -6,13 +6,13 @@ require 'time'
|
|
|
6
6
|
|
|
7
7
|
module Pindo
|
|
8
8
|
|
|
9
|
-
VERSION = "5.17.
|
|
9
|
+
VERSION = "5.17.3"
|
|
10
10
|
|
|
11
11
|
class VersionCheck
|
|
12
12
|
RUBYGEMS_API = 'https://rubygems.org/api/v1/gems/pindo.json'
|
|
13
13
|
VERSION_INFO_FILE = File.expand_path('~/.pindo/version_info.yml')
|
|
14
14
|
CHECK_INTERVAL = 5 * 60 * 60 # 5小时检查一次
|
|
15
|
-
CONFIG_MIN_VERSION = '1.
|
|
15
|
+
CONFIG_MIN_VERSION = '1.5.0' # 硬编码的配置版本要求
|
|
16
16
|
|
|
17
17
|
class << self
|
|
18
18
|
# 主版本检查方法(保持向后兼容)
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: pindo
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 5.17.
|
|
4
|
+
version: 5.17.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- wade
|
|
@@ -112,7 +112,7 @@ dependencies:
|
|
|
112
112
|
version: '2.0'
|
|
113
113
|
- - ">="
|
|
114
114
|
- !ruby/object:Gem::Version
|
|
115
|
-
version: 2.0.
|
|
115
|
+
version: 2.0.4
|
|
116
116
|
type: :runtime
|
|
117
117
|
prerelease: false
|
|
118
118
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -122,7 +122,7 @@ dependencies:
|
|
|
122
122
|
version: '2.0'
|
|
123
123
|
- - ">="
|
|
124
124
|
- !ruby/object:Gem::Version
|
|
125
|
-
version: 2.0.
|
|
125
|
+
version: 2.0.4
|
|
126
126
|
- !ruby/object:Gem::Dependency
|
|
127
127
|
name: rqrcode
|
|
128
128
|
requirement: !ruby/object:Gem::Requirement
|