pindo 5.17.1 → 5.17.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 01245e7c2b1ce7ed1af8cf67d2ebd2dbb89f34ff97fd66dcc966b5deedf60eb5
4
- data.tar.gz: a3005e2f35823c27da9a732b8032f58bc0f3af58e163181e2174415009a020e1
3
+ metadata.gz: 4c72f7acb18bc2b9f09eee1bd25386ac612a29ac7a37b5a4f35e9b56853f5c86
4
+ data.tar.gz: 196b9a7f836a67de966ff2f5e4a27dfe1805e0fa2098de6b767e865cbc386a68
5
5
  SHA512:
6
- metadata.gz: e755d78573766a49df4f16d18474a7abdfa6da8223414c0343cc025e2ca5e6b9c1b2721c369fb4bed9acf1010f72936bcdee23fcd0c577bb5c850407d15cb884
7
- data.tar.gz: ca6ba428dc6ddc71b13d07d0062bc297e3acda8f4fae4bfa60af6e4a0ad04afc85487cb385bcb6872a414686811ba8fc4688ee4b7a777cf2fd1ddf84a4914c2a
6
+ metadata.gz: 2ec1d2ba069d15615d2a209a1c8497ae43c0f88b4a072e74ba6020e169225d6e37e4f51163741cf3e15375f17004d6a53220aae2e70d482bcc2edf79da7a5d24
7
+ data.tar.gz: c7dc2c39a97a172654d6c9aad3132865dcf0a3b95122d9590477bd496d5a3e3d2338bfdfbf17ec47e9c849115bd614fb5e5c7939c3daff22fc43d4c9a4508fe1
@@ -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(:proj, :upload, :media, :bind, :send),
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
- @args_proj_name = @options[:proj]
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
- proj_name: @args_proj_name,
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] = @args_proj_name if @args_proj_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
- proj_name: @args_proj_name,
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: @args_proj_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: @args_proj_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
- proj_name: @args_proj_name,
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: @args_proj_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: @args_proj_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
- proj_name: @args_proj_name,
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(:proj, :upload, :send),
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
- @args_proj_name = @options[:proj]
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] = @args_proj_name if @args_proj_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: @args_proj_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
- proj_name: proj_name
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(:proj, :upload, :send))
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
- @args_proj_name = @options[:proj]
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
- proj_name: proj_name,
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: @args_proj_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(:proj, :upload, :media, :bind, :send),
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
- @args_proj_name = @options[:proj]
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] = @args_proj_name if @args_proj_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: @args_proj_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: @args_proj_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
- proj_name: @args_proj_name,
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: @args_proj_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: @args_proj_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
- proj_name: @args_proj_name,
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
- proj_name: @args_proj_name,
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(:proj, :upload, :send))
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
- @args_proj_name = @options[:proj]
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
- proj_name: proj_name,
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: @args_proj_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(:proj, :send, :list, :group)
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
- @args_proj_name = @options[:proj]
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
- proj_name: @args_proj_name,
74
+ conf: @args_conf,
75
75
  package_type: 'ipa' # 获取 IPA 工作流信息
76
76
  )
77
77
 
78
78
  if app_info_obj.nil?
79
- raise Informative, "#{@args_proj_name} 错误,请输入正确的 App 代号名称"
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: @args_proj_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
- proj_name: @args_proj_name,
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(:proj),
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
- @args_proj_name = @options[:proj]
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
- proj_name: @args_proj_name,
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, "#{@args_proj_name} 错误,请输入正确的App代号名称"
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: @args_proj_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
- ['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo jps download --proj=prancksoundv4'],
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
- @args_proj_name = argv.option('proj')
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, proj_name:@args_proj_name)
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, "#{proj_name} 错误, 请输入正确的App代号名称, jps网站没有该App"
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(:proj),
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
- @args_proj_name = @options[:proj]
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
- proj_name: @args_proj_name,
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, "#{@args_proj_name} 错误,请输入正确的App代号名称"
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: @args_proj_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(:proj, :send, :list),
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
- @args_proj_name = @options[:proj]
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
- # proj_name: @args_proj_name,
83
+ # conf: @args_conf,
84
84
  # package_type: 'ipa' # 获取 IPA 工作流信息
85
85
  # )
86
86
 
87
87
  # if app_info_obj.nil?
88
- # raise Informative, "#{@args_proj_name} 错误,请输入正确的 App 代号名称"
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: @args_proj_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: @args_proj_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
- # proj_name: @args_proj_name,
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(:proj, :send, :desc, :resign),
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
- @args_proj_name = @options[:proj]
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 !@args_proj_name.nil? && !@args_proj_name.empty?
149
- args << "--proj=#{@args_proj_name}"
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: @args_proj_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
- proj_name: @args_proj_name,
480
+ conf: @args_conf,
481
481
  package_type: package_type
482
482
  )
483
483
 
484
484
  if app_info_obj.nil?
485
- raise Informative, "#{@args_proj_name} 错误, 请输入正确的App代号名称, jps网站没有该App"
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: @args_proj_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(:proj, :upload, :send, :media, :bind),
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
- @args_proj_name = @options[:proj]
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
- proj_name: all_platform_configs["project_name"],
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
- proj_name: @args_proj_name,
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(:proj, :upload, :send, :media, :bind),
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
- @args_proj_name = @options[:proj]
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
- proj_name: @args_proj_name,
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] = @args_proj_name if @args_proj_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
- proj_name: @args_proj_name,
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: @args_proj_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: @args_proj_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
- proj_name: @args_proj_name,
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: @args_proj_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: @args_proj_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
- proj_name: @args_proj_name,
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(working_directory:, package_type:, manage_type: "")
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 " working_directory: #{working_directory}"
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:, proj_name: nil, skip_config_file: false)
396
- upload_proj_name = proj_name
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
- # 1. 项目名称获取逻辑
399
- # 1.1 如果 proj_name 为空,从环境变量获取
400
- if upload_proj_name.nil? || upload_proj_name.empty?
401
- upload_proj_name = ENV['PINDO_PROJECT_NAME']
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
- # 1.2 如果仍为空且未禁用,从 IosConfigParser 获取
405
- if (upload_proj_name.nil? || upload_proj_name.empty?) && !skip_config_file
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
- # 1.3 如果还是为空,让用户输入
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
- # 2. 确保已登录
432
+ # 确保已登录
425
433
  unless login
426
434
  raise Informative, "请先登录 JPS 网站"
427
435
  end
428
436
 
429
- # 3. 获取 app_info_obj
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, proj_name:nil, package_type:nil, manage_type: "")
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 " proj_name: #{proj_name.inspect}"
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
- upload_proj_name = proj_name
467
- if upload_proj_name.nil? || upload_proj_name.empty?
468
- upload_proj_name = @proj_name
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
- # 【核心优化】尝试从 JPSBuildConfig.json 加载配置
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
- working_directory: working_directory,
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
- if !(env_project_name && !env_project_name.empty?)
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
- if cached_app_key && proj_name_array.include?(cached_app_key)
627
- puts "\n使用之前选择的JPS项目: #{cached_app_key}"
628
- upload_proj_name = cached_app_key
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
@@ -164,7 +164,6 @@ module Pindo
164
164
  # 上传任务需要 package_type 和 workflow_info
165
165
  @app_info_obj, @workflow_info = pgyer_helper.prepare_upload(
166
166
  working_directory: working_directory,
167
- proj_name: @project_name,
168
167
  package_type: package_type
169
168
  )
170
169
 
@@ -130,8 +130,9 @@ module Pindo
130
130
  puts "✅ 登录成功"
131
131
  puts
132
132
 
133
- # 2. 查询 Nuget 项目
134
- nuget_project = find_nuget_project(jps_client)
133
+ # 2. 查询 Nuget 项目(已注释:直接使用硬编码项目 ID,无需查询列表)
134
+ # nuget_project = find_nuget_project(jps_client)
135
+ nuget_project_id = '5e6b36f61b614ed88086373ef874616c'
135
136
  puts
136
137
 
137
138
  # 3. 上传文件到存储
@@ -172,15 +173,14 @@ module Pindo
172
173
 
173
174
  if ENV['PINDO_DEBUG']
174
175
  puts "[DEBUG] 提交参数:"
175
- puts "[DEBUG] 项目ID: #{nuget_project['id']}"
176
- puts "[DEBUG] 项目名称: #{nuget_project['projectName']}"
176
+ puts "[DEBUG] 项目ID: #{nuget_project_id}"
177
177
  puts "[DEBUG] 包URL: #{file_url}"
178
178
  puts "[DEBUG] 附件URLs: #{request_params[:attachFileUrls].inspect}"
179
179
  end
180
180
 
181
181
  puts "++++++ 1 upload_nuget_package" if ENV['PINDO_DEBUG']
182
182
  result = jps_client.upload_nuget_package(
183
- projectId: nuget_project['id'],
183
+ projectId: nuget_project_id,
184
184
  params: request_params
185
185
  )
186
186
 
@@ -213,28 +213,31 @@ module Pindo
213
213
  def find_nuget_project(jps_client)
214
214
  puts "🔍 查询 Nuget 项目..."
215
215
 
216
- result = jps_client.get_project_list(params: {})
216
+ target_project_id = '5e6b36f61b614ed88086373ef874616c'
217
+ page_no = 1
218
+ page_size = 40
217
219
 
218
- unless result && (result['code'] == 0 || result['code'] == 200)
219
- raise Informative, "获取项目列表失败"
220
- end
220
+ loop do
221
+ result = jps_client.get_project_list(params: { pageNo: page_no, pageSize: page_size })
221
222
 
222
- projects = result['data'] || []
223
+ unless result && (result['code'] == 0 || result['code'] == 200)
224
+ raise Informative, "获取项目列表失败"
225
+ end
223
226
 
224
- if projects.empty?
225
- raise Informative, "JPS 中没有任何项目,请联系管理员创建"
226
- end
227
+ projects = result['data'] || []
227
228
 
228
- # 优先通过固定 ID 查找
229
- target_project_id = '5e6b36f61b614ed88086373ef874616c'
230
- nuget_project = projects.find { |p| p['id'] == target_project_id }
229
+ nuget_project = projects.find { |p| p['id'] == target_project_id }
230
+ if nuget_project
231
+ puts "✅ 找到 Nuget 组件库项目: #{nuget_project['projectName']} (ID: #{nuget_project['id']})"
232
+ return nuget_project
233
+ end
234
+
235
+ # 当前页不足一页,说明已是最后一页
236
+ break if projects.size < page_size
231
237
 
232
- if nuget_project
233
- puts "✅ 找到 Nuget 组件库项目: #{nuget_project['projectName']} (ID: #{nuget_project['id']})"
234
- return nuget_project
238
+ page_no += 1
235
239
  end
236
240
 
237
- # 如果没找到,抛出错误(Task 模式不支持交互式输入)
238
241
  raise Informative, "未找到默认 Nuget 组件库项目 (ID: #{target_project_id}),请联系管理员"
239
242
  end
240
243
 
@@ -648,10 +648,12 @@ module Pindo
648
648
 
649
649
  Dir.chdir(temp_dir)
650
650
 
651
- # 过滤只保留符合规范的 commits(feat:, fix:, docs:, perf:, refactor:, style:, test:, chore:, revert:)
652
- valid_prefixes = ['feat:', 'fix:', 'docs:', 'doc:', 'perf:', 'refactor:', 'style:', 'test:', 'chore:', 'revert:']
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
- valid_prefixes.any? { |prefix| commit.downcase.start_with?(prefix) }
655
+ first_line = commit.lines.first&.strip || ""
656
+ conventional_commit_regex.match?(first_line)
655
657
  end
656
658
 
657
659
  # 如果没有符合规范的 commits,返回默认消息
@@ -107,7 +107,7 @@ module Pindo
107
107
  # 2. 构建配置
108
108
  :build_type, :scheme,
109
109
  # 3. JPS 相关
110
- :proj, :upload, :send, :desc,
110
+ :conf, :upload, :send, :desc,
111
111
  # 4. Unity 相关
112
112
  :skipconfig, :skiplib, :skipyoo,
113
113
  # 5. Git 相关
@@ -10,15 +10,15 @@ module Pindo
10
10
 
11
11
  def self.all_options
12
12
  @all_options ||= {
13
- proj: OptionItem.new(
14
- key: :proj,
15
- name: '项目名称',
16
- description: '指定上传到测试平台的项目名称',
13
+ conf: OptionItem.new(
14
+ key: :conf,
15
+ name: '配置文件',
16
+ description: '指定 JPSBuildConfig.json 配置文件路径;不指定时自动从当前工作目录或工程目录查找',
17
17
  type: String,
18
- env_name: 'PINDO_PROJECT_NAME',
18
+ env_name: 'PINDO_CONF_PATH',
19
19
  optional: true,
20
- cacheable: true, # 存入文件缓存
21
- example: 'pindo ios autobuild --proj="My App"'
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,7 +6,7 @@ require 'time'
6
6
 
7
7
  module Pindo
8
8
 
9
- VERSION = "5.17.1"
9
+ VERSION = "5.17.4"
10
10
 
11
11
  class VersionCheck
12
12
  RUBYGEMS_API = 'https://rubygems.org/api/v1/gems/pindo.json'
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pindo
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.17.1
4
+ version: 5.17.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 1980-01-02 00:00:00.000000000 Z
10
+ date: 2026-03-08 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: claide
@@ -511,7 +511,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
511
511
  - !ruby/object:Gem::Version
512
512
  version: 3.0.0
513
513
  requirements: []
514
- rubygems_version: 4.0.3
514
+ rubygems_version: 3.6.3
515
515
  specification_version: 4
516
516
  summary: easy work
517
517
  test_files: []