pindo 5.14.4 → 5.14.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/git_handler.rb +140 -65
  3. data/lib/pindo/client/httpclient.rb +88 -12
  4. data/lib/pindo/command/android/autobuild.rb +100 -32
  5. data/lib/pindo/command/appstore/bundleid.rb +1 -1
  6. data/lib/pindo/command/appstore/pem.rb +1 -1
  7. data/lib/pindo/command/ios/autobuild.rb +116 -56
  8. data/lib/pindo/command/jps/apptest.rb +129 -50
  9. data/lib/pindo/command/jps/bind.rb +284 -121
  10. data/lib/pindo/command/jps/media.rb +1 -15
  11. data/lib/pindo/command/jps/resign.rb +109 -99
  12. data/lib/pindo/command/jps/upload.rb +31 -4
  13. data/lib/pindo/command/jps.rb +0 -1
  14. data/lib/pindo/command/unity/autobuild.rb +100 -39
  15. data/lib/pindo/command/web/autobuild.rb +95 -27
  16. data/lib/pindo/command.rb +23 -15
  17. data/lib/pindo/module/pgyer/pgyerhelper.rb +181 -0
  18. data/lib/pindo/module/task/model/git/git_commit_task.rb +55 -4
  19. data/lib/pindo/module/task/model/git/git_tag_task.rb +5 -4
  20. data/lib/pindo/module/task/model/jps/jps_bind_package_task.rb +233 -0
  21. data/lib/pindo/module/task/model/jps/jps_message_task.rb +9 -6
  22. data/lib/pindo/module/task/model/jps/jps_resign_task.rb +20 -21
  23. data/lib/pindo/module/task/model/jps/jps_upload_media_task.rb +57 -22
  24. data/lib/pindo/module/task/model/jps/jps_upload_task.rb +4 -4
  25. data/lib/pindo/module/task/model/jps/jps_workflow_message_task.rb +190 -0
  26. data/lib/pindo/options/core/option_configuration.rb +4 -36
  27. data/lib/pindo/options/core/option_initializer.rb +6 -3
  28. data/lib/pindo/options/core/option_item.rb +0 -3
  29. data/lib/pindo/options/groups/jps_options.rb +30 -10
  30. data/lib/pindo/version.rb +1 -1
  31. metadata +12 -37
  32. data/lib/pindo/command/jps/comment.rb +0 -84
@@ -9,11 +9,9 @@ module Pindo
9
9
  # 初始化
10
10
  # @param available_options [Array<OptionItem>] 可用参数列表
11
11
  # @param raw_values [Hash] 原始参数值
12
- # @param command_instance [Object, nil] 命令实例(用于 value_block)
13
- def initialize(available_options, raw_values = {}, command_instance: nil)
12
+ def initialize(available_options, raw_values = {})
14
13
  @available_options = available_options
15
14
  @raw_values = raw_values
16
- @command_instance = command_instance
17
15
  @values = {}
18
16
  @options_map = build_options_map
19
17
 
@@ -94,16 +92,13 @@ module Pindo
94
92
  # 2. 应用原始值(命令行参数和环境变量)
95
93
  apply_raw_values
96
94
 
97
- # 3. 应用 value_block(交互式获取值)
98
- apply_value_blocks
99
-
100
- # 4. 类型转换
95
+ # 3. 类型转换
101
96
  convert_types
102
97
 
103
- # 5. 验证必填参数
98
+ # 4. 验证必填参数
104
99
  validate_required
105
100
 
106
- # 6. 自定义验证
101
+ # 5. 自定义验证
107
102
  validate_custom
108
103
  end
109
104
 
@@ -130,33 +125,6 @@ module Pindo
130
125
  end
131
126
  end
132
127
 
133
- # 应用 value_block(交互式获取值)
134
- # 优先级:命令行参数 > 缓存(已在 raw_values) > value_block > 默认值
135
- def apply_value_blocks
136
- # 检测是否是 help 请求,跳过交互式选择
137
- return if ARGV.include?('--help') || ARGV.include?('-h')
138
-
139
- @available_options.each do |item|
140
- # 只有当参数没有值时,才调用 value_block
141
- next if @values.key?(item.key) && !@values[item.key].nil?
142
- next unless item.value_block
143
-
144
- begin
145
- # 调用 value_block 获取值
146
- # 如果 value_block 接受参数,则传入命令实例
147
- value = if item.value_block.arity > 0
148
- item.value_block.call(@command_instance)
149
- else
150
- item.value_block.call
151
- end
152
- @values[item.key] = value unless value.nil?
153
- rescue StandardError => e
154
- # value_block 执行失败,记录错误但不中断流程
155
- puts "[OptionConfiguration] value_block 执行失败 (#{item.key}): #{e.message}"
156
- end
157
- end
158
- end
159
-
160
128
  # 类型转换
161
129
  def convert_types
162
130
  @available_options.each do |item|
@@ -21,7 +21,10 @@ module Pindo
21
21
  raw_values = OptionValueParser.parse(argv, option_items)
22
22
 
23
23
  # 2. 如果启用缓存,合并缓存值到 raw_values
24
- if enable_cache
24
+ # 注意:如果是 --help 参数,跳过缓存逻辑
25
+ is_help_flag = argv.flag?('help')
26
+
27
+ if enable_cache && !is_help_flag
25
28
  state = GlobalOptionsState.instance
26
29
  state.prepare_cache(command_name, directory || Dir.pwd)
27
30
  cached_values = state.load_cached_values
@@ -33,8 +36,8 @@ module Pindo
33
36
  end
34
37
  end
35
38
 
36
- # 3. 创建参数配置(自动处理验证等,传入命令实例用于 value_block)
37
- options = OptionConfiguration.new(option_items, raw_values, command_instance: command_instance)
39
+ # 3. 创建参数配置(自动处理验证等)
40
+ options = OptionConfiguration.new(option_items, raw_values)
38
41
 
39
42
  # 4. 设置全局状态
40
43
  GlobalOptionsState.instance.set_command(
@@ -14,7 +14,6 @@ module Pindo
14
14
  attr_accessor :optional # Boolean: 是否可选(默认为 true)
15
15
  attr_accessor :cacheable # Boolean: 是否存入缓存(默认为 true)
16
16
  attr_accessor :verify_block # Proc: 自定义验证逻辑
17
- attr_accessor :value_block # Proc: 获取参数值的 block(交互式输入)
18
17
  attr_accessor :example # String: 使用示例
19
18
 
20
19
  # Boolean 类型标记
@@ -36,7 +35,6 @@ module Pindo
36
35
  @optional = options.fetch(:optional, true)
37
36
  @cacheable = options.fetch(:cacheable, false) # 默认不存入缓存
38
37
  @verify_block = options[:verify_block]
39
- @value_block = options[:value_block]
40
38
  @example = options[:example]
41
39
 
42
40
  validate_type!
@@ -129,7 +127,6 @@ module Pindo
129
127
  optional: overrides.key?(:optional) ? overrides[:optional] : @optional,
130
128
  cacheable: overrides.key?(:cacheable) ? overrides[:cacheable] : @cacheable,
131
129
  verify_block: overrides[:verify_block] || @verify_block,
132
- value_block: overrides[:value_block] || @value_block,
133
130
  example: overrides[:example] || @example
134
131
  )
135
132
  end
@@ -61,16 +61,6 @@ module Pindo
61
61
  example: 'pindo jps upload --resign'
62
62
  ),
63
63
 
64
- certid: OptionItem.new(
65
- key: :certid,
66
- name: '重签名Bundle ID',
67
- description: '设置重签名的Bundle ID',
68
- type: String,
69
- env_name: 'PINDO_CERT_ID',
70
- optional: true,
71
- example: 'pindo jps resign --certid=com.test.bundleid'
72
- ),
73
-
74
64
  media: OptionItem.new(
75
65
  key: :media,
76
66
  name: '上传媒体附件',
@@ -79,6 +69,36 @@ module Pindo
79
69
  env_name: 'PINDO_UPLOAD_MEDIA',
80
70
  optional: true,
81
71
  example: 'pindo ios autobuild --media'
72
+ ),
73
+
74
+ bind: OptionItem.new(
75
+ key: :bind,
76
+ name: '绑定Git Commit',
77
+ description: '上传完成后,将 Git commit 绑定到已上传的项目包',
78
+ type: OptionItem::Boolean,
79
+ env_name: 'PINDO_BIND_COMMIT',
80
+ optional: true,
81
+ example: 'pindo ios autobuild --bind'
82
+ ),
83
+
84
+ list: OptionItem.new(
85
+ key: :list,
86
+ name: '列出历史版本',
87
+ description: '列出历史上传记录并选择',
88
+ type: OptionItem::Boolean,
89
+ env_name: 'PINDO_LIST_VERSIONS',
90
+ optional: true,
91
+ example: 'pindo jps apptest --list'
92
+ ),
93
+
94
+ group: OptionItem.new(
95
+ key: :group,
96
+ name: '发送到测试组',
97
+ description: '发送消息到测试组(DevTest)而不是只发给自己',
98
+ type: OptionItem::Boolean,
99
+ env_name: 'PINDO_SEND_GROUP',
100
+ optional: true,
101
+ example: 'pindo jps apptest --group'
82
102
  )
83
103
  }
84
104
  end
data/lib/pindo/version.rb CHANGED
@@ -6,7 +6,7 @@ require 'time'
6
6
 
7
7
  module Pindo
8
8
 
9
- VERSION = "5.14.4"
9
+ VERSION = "5.14.6"
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.14.4
4
+ version: 5.14.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade
8
8
  bindir: bin
9
9
  cert_chain: []
10
- date: 2025-12-29 00:00:00.000000000 Z
10
+ date: 2025-12-31 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: claide
@@ -115,20 +115,20 @@ dependencies:
115
115
  requirements:
116
116
  - - "~>"
117
117
  - !ruby/object:Gem::Version
118
- version: '1.7'
118
+ version: '1.8'
119
119
  - - ">="
120
120
  - !ruby/object:Gem::Version
121
- version: 1.7.0
121
+ version: 1.8.0
122
122
  type: :runtime
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - "~>"
127
127
  - !ruby/object:Gem::Version
128
- version: '1.7'
128
+ version: '1.8'
129
129
  - - ">="
130
130
  - !ruby/object:Gem::Version
131
- version: 1.7.0
131
+ version: 1.8.0
132
132
  - !ruby/object:Gem::Dependency
133
133
  name: rqrcode
134
134
  requirement: !ruby/object:Gem::Requirement
@@ -149,46 +149,20 @@ dependencies:
149
149
  - - ">="
150
150
  - !ruby/object:Gem::Version
151
151
  version: 2.2.0
152
- - !ruby/object:Gem::Dependency
153
- name: faraday-retry
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: '1.0'
159
- - - ">="
160
- - !ruby/object:Gem::Version
161
- version: 1.0.3
162
- type: :runtime
163
- prerelease: false
164
- version_requirements: !ruby/object:Gem::Requirement
165
- requirements:
166
- - - "~>"
167
- - !ruby/object:Gem::Version
168
- version: '1.0'
169
- - - ">="
170
- - !ruby/object:Gem::Version
171
- version: 1.0.3
172
152
  - !ruby/object:Gem::Dependency
173
153
  name: typhoeus
174
154
  requirement: !ruby/object:Gem::Requirement
175
155
  requirements:
176
156
  - - "~>"
177
157
  - !ruby/object:Gem::Version
178
- version: 1.4.0
179
- - - ">="
180
- - !ruby/object:Gem::Version
181
- version: 1.4.1
158
+ version: '1.4'
182
159
  type: :runtime
183
160
  prerelease: false
184
161
  version_requirements: !ruby/object:Gem::Requirement
185
162
  requirements:
186
163
  - - "~>"
187
164
  - !ruby/object:Gem::Version
188
- version: 1.4.0
189
- - - ">="
190
- - !ruby/object:Gem::Version
191
- version: 1.4.1
165
+ version: '1.4'
192
166
  - !ruby/object:Gem::Dependency
193
167
  name: nokogiri
194
168
  requirement: !ruby/object:Gem::Requirement
@@ -362,7 +336,6 @@ files:
362
336
  - lib/pindo/command/jps.rb
363
337
  - lib/pindo/command/jps/apptest.rb
364
338
  - lib/pindo/command/jps/bind.rb
365
- - lib/pindo/command/jps/comment.rb
366
339
  - lib/pindo/command/jps/download.rb
367
340
  - lib/pindo/command/jps/login.rb
368
341
  - lib/pindo/command/jps/media.rb
@@ -450,10 +423,12 @@ files:
450
423
  - lib/pindo/module/task/model/git/git_commit_task.rb
451
424
  - lib/pindo/module/task/model/git/git_tag_task.rb
452
425
  - lib/pindo/module/task/model/git_task.rb
426
+ - lib/pindo/module/task/model/jps/jps_bind_package_task.rb
453
427
  - lib/pindo/module/task/model/jps/jps_message_task.rb
454
428
  - lib/pindo/module/task/model/jps/jps_resign_task.rb
455
429
  - lib/pindo/module/task/model/jps/jps_upload_media_task.rb
456
430
  - lib/pindo/module/task/model/jps/jps_upload_task.rb
431
+ - lib/pindo/module/task/model/jps/jps_workflow_message_task.rb
457
432
  - lib/pindo/module/task/model/jps_task.rb
458
433
  - lib/pindo/module/task/model/nuget/nuget_build_task.rb
459
434
  - lib/pindo/module/task/model/nuget/nuget_upload_task.rb
@@ -530,9 +505,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
530
505
  requirements:
531
506
  - - ">="
532
507
  - !ruby/object:Gem::Version
533
- version: '0'
508
+ version: 3.0.0
534
509
  requirements: []
535
510
  rubygems_version: 3.6.3
536
- specification_version: 3
511
+ specification_version: 4
537
512
  summary: easy work
538
513
  test_files: []
@@ -1,84 +0,0 @@
1
- require 'highline/import'
2
- require 'fileutils'
3
- require 'pindo/module/pgyer/pgyerhelper'
4
-
5
-
6
- module Pindo
7
- class Command
8
- class Jps < Command
9
- class Comment < Jps
10
-
11
- self.summary = '修改jps中已经上传安装包的备注信息'
12
-
13
- self.description = <<-DESC
14
- 修改jps中已经上传安装包的备注信息。
15
-
16
- 支持功能:
17
-
18
- * 修改版本备注
19
- * 查看历史版本
20
- * 选择指定版本
21
-
22
- 使用示例:
23
-
24
- $ pindo jps comment # 修改当前目录项目的最新版本备注
25
-
26
- $ pindo jps comment --proj=demo # 修改指定项目的版本备注
27
-
28
- $ pindo jps comment --list # 列出历史版本供选择修改
29
- DESC
30
-
31
- self.arguments = [
32
-
33
- ]
34
-
35
- def self.options
36
- [
37
- ['--login', '强制再次登录jps网站'],
38
- ['--proj', '指定哪个项目(忽略大小写空格等等字符),用法:pindo jps comment --proj=prancksoundv4'],
39
- ['--list', '列出上传记录并选择,用法:pindo jps comment --list'],
40
-
41
- ].concat(super)
42
- end
43
-
44
-
45
-
46
- def initialize(argv)
47
-
48
- @args_login_flag = argv.flag?('login', false)
49
- @args_list_flag = argv.flag?('list', false)
50
- @args_proj_name = argv.option('proj')
51
-
52
- super(argv)
53
- @additional_args = argv.remainder!
54
- end
55
-
56
- def validate!
57
-
58
- super
59
- end
60
-
61
- def run
62
-
63
- PgyerHelper.share_instace.setForeLogin(beforeLogin:@args_login_flag)
64
- app_info_obj = PgyerHelper.share_instace.prepare_upload(working_directory:Dir.pwd, proj_name:@args_proj_name)
65
-
66
- if app_info_obj.nil?
67
- raise Informative, "#{proj_name} 错误, 请输入正确的App代号名称, jps网站没有该App"
68
- end
69
-
70
-
71
- version_item_obj = PgyerHelper.share_instace.get_versioon_history_item(app_info_obj:app_info_obj, list_select_flat:@args_list_flag)
72
-
73
- if version_item_obj.nil?
74
- raise Informative, "没有找到上传记录"
75
- end
76
-
77
- PgyerHelper.share_instace.modify_coment(app_info_obj:app_info_obj, version_item_obj:version_item_obj)
78
-
79
- end
80
-
81
- end
82
- end
83
- end
84
- end