pindo 5.13.9 → 5.13.10

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 (70) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/git_handler.rb +247 -42
  3. data/lib/pindo/command/android/autobuild.rb +72 -30
  4. data/lib/pindo/command/android/autoresign.rb +23 -322
  5. data/lib/pindo/command/android/keystore.rb +7 -130
  6. data/lib/pindo/command/appstore/adhocbuild.rb +5 -14
  7. data/lib/pindo/command/appstore/autobuild.rb +64 -14
  8. data/lib/pindo/command/appstore/autoresign.rb +1 -3
  9. data/lib/pindo/command/ios/autobuild.rb +71 -53
  10. data/lib/pindo/command/ios/build.rb +8 -186
  11. data/lib/pindo/command/jps/media.rb +146 -0
  12. data/lib/pindo/command/jps/upload.rb +48 -20
  13. data/lib/pindo/command/jps.rb +1 -0
  14. data/lib/pindo/command/unity/autobuild.rb +99 -27
  15. data/lib/pindo/command/unity/packpush.rb +5 -8
  16. data/lib/pindo/command/utils/repoinit.rb +0 -2
  17. data/lib/pindo/command/utils/tag.rb +58 -26
  18. data/lib/pindo/command/utils.rb +0 -1
  19. data/lib/pindo/command/web/autobuild.rb +71 -37
  20. data/lib/pindo/command.rb +0 -56
  21. data/lib/pindo/config/build_info_manager.rb +7 -8
  22. data/lib/pindo/module/android/android_config_helper.rb +2 -11
  23. data/lib/pindo/module/appselect.rb +15 -41
  24. data/lib/pindo/module/appstore/itcapp_helper.rb +3 -6
  25. data/lib/pindo/module/build/build_helper.rb +28 -18
  26. data/lib/pindo/module/build/git_repo_helper.rb +284 -405
  27. data/lib/pindo/module/cert/pem_helper.rb +3 -6
  28. data/lib/pindo/module/pgyer/pgyerhelper.rb +193 -25
  29. data/lib/pindo/module/task/model/appstore/appstore_task.rb +5 -0
  30. data/lib/pindo/module/task/model/build/android_build_adhoc_task.rb +13 -187
  31. data/lib/pindo/module/task/model/build/android_build_dev_task.rb +36 -34
  32. data/lib/pindo/module/task/model/build/android_build_gplay_task.rb +13 -187
  33. data/lib/pindo/module/task/model/build/ios_build_adhoc_task.rb +9 -6
  34. data/lib/pindo/module/task/model/build/ios_build_appstore_task.rb +9 -6
  35. data/lib/pindo/module/task/model/build/ios_build_dev_task.rb +37 -32
  36. data/lib/pindo/module/task/model/build/web_build_dev_task.rb +7 -5
  37. data/lib/pindo/module/task/model/build_task.rb +8 -11
  38. data/lib/pindo/module/task/model/git/git_commit_task.rb +118 -0
  39. data/lib/pindo/module/task/model/git/git_tag_task.rb +125 -0
  40. data/lib/pindo/module/task/model/git_task.rb +75 -0
  41. data/lib/pindo/module/task/model/jps/jps_message_task.rb +178 -0
  42. data/lib/pindo/module/task/model/{resign → jps}/jps_resign_task.rb +13 -22
  43. data/lib/pindo/module/task/model/jps/jps_upload_media_task.rb +248 -0
  44. data/lib/pindo/module/task/model/jps/jps_upload_task.rb +38 -93
  45. data/lib/pindo/module/task/model/jps_task.rb +43 -0
  46. data/lib/pindo/module/task/model/resign/ipa_local_resign_task.rb +5 -0
  47. data/lib/pindo/module/task/model/unity/unity_config_task.rb +0 -4
  48. data/lib/pindo/module/task/model/unity/unity_export_task.rb +8 -7
  49. data/lib/pindo/module/task/model/unity/unity_update_task.rb +4 -3
  50. data/lib/pindo/module/task/model/unity/unity_yoo_asset_task.rb +8 -7
  51. data/lib/pindo/module/task/model/unity_task.rb +7 -2
  52. data/lib/pindo/module/task/pindo_task.rb +101 -1
  53. data/lib/pindo/module/task/task_manager.rb +29 -32
  54. data/lib/pindo/module/unity/nuget_helper.rb +7 -7
  55. data/lib/pindo/options/core/global_options_state.rb +96 -26
  56. data/lib/pindo/options/core/option_configuration.rb +3 -0
  57. data/lib/pindo/options/core/option_item.rb +36 -0
  58. data/lib/pindo/options/groups/build_options.rb +23 -6
  59. data/lib/pindo/options/groups/git_options.rb +115 -0
  60. data/lib/pindo/options/groups/jps_options.rb +7 -0
  61. data/lib/pindo/options/groups/option_group.rb +15 -0
  62. data/lib/pindo/options/groups/unity_options.rb +49 -0
  63. data/lib/pindo/options/options.rb +2 -0
  64. data/lib/pindo/version.rb +2 -2
  65. metadata +15 -11
  66. data/lib/pindo/base/githelper.rb +0 -686
  67. data/lib/pindo/base/pindocontext.rb +0 -602
  68. data/lib/pindo/command/utils/feishu.rb +0 -134
  69. data/lib/pindo/module/build/version_helper.rb +0 -146
  70. data/lib/pindo/module/task/model/git_tag_task.rb +0 -80
@@ -0,0 +1,248 @@
1
+ require 'pindo/module/task/model/jps_task'
2
+ require 'pindo/module/task/task_config'
3
+ require 'pindo/module/pgyer/pgyerhelper'
4
+
5
+ module Pindo
6
+ module TaskSystem
7
+ # JPS Media 上传任务
8
+ # 上传图片、视频等 media 文件到 JPS 并关联到提交记录
9
+ #
10
+ # 支持两种模式:
11
+ # 1. 指定模式:传入 file_paths 和 git_commit_id
12
+ # 2. 自动模式:只传入 project_path,自动查找 JPSMedia/ 目录和 git HEAD 信息
13
+ class JPSUploadMediaTask < JPSTask
14
+ attr_reader :file_paths, :git_commit_id, :git_commit_time, :git_commit_desc
15
+ attr_reader :workflow_id, :project_path
16
+
17
+ # 支持的媒体文件扩展名
18
+ MEDIA_EXTENSIONS = %w[png jpg jpeg gif bmp webp mp4 mov avi mkv webm].freeze
19
+
20
+ # 任务键
21
+ def self.task_key
22
+ :jps_upload_media
23
+ end
24
+
25
+ # 初始化 Media 上传任务
26
+ # @param file_paths [Array<String>] 要上传的文件路径列表(可选,为空时自动查找)
27
+ # @param options [Hash] 选项
28
+ # @option options [String] :git_commit_id Git commit SHA(可选,为空时自动获取 HEAD)
29
+ # @option options [String] :git_commit_time Git commit 时间(可选)
30
+ # @option options [String] :git_commit_desc Git commit 描述(可选)
31
+ # @option options [Integer] :workflow_id 工作流ID(可选,用于筛选 commit_log)
32
+ # @option options [String] :project_name 项目名称(可选)
33
+ # @option options [String] :project_path 项目路径(必需,用于查找 git 仓库和 JPSMedia 目录)
34
+ def initialize(file_paths, options = {})
35
+ @file_paths = file_paths || [] # 要上传的文件路径列表
36
+ @git_commit_id = options[:git_commit_id] # Git commit SHA
37
+ @git_commit_time = options[:git_commit_time] # Git commit 时间
38
+ @git_commit_desc = options[:git_commit_desc] # Git commit 描述
39
+ @workflow_id = options[:workflow_id] # 工作流ID
40
+ @project_path = options[:project_path] # 项目路径
41
+
42
+ # 设置任务优先级为 LOW,确保在其他任务之后执行
43
+ options[:priority] ||= TaskPriority::LOW
44
+
45
+ name = "上传 Media 附件"
46
+
47
+ super(name, options)
48
+ end
49
+
50
+ def validate
51
+ # 验证 project_path(必需参数)
52
+ unless @project_path && !@project_path.empty? && Dir.exist?(@project_path)
53
+ @error = "缺少必需参数: project_path(项目路径)或路径不存在"
54
+ return false
55
+ end
56
+
57
+ true
58
+ end
59
+
60
+ # Media 上传任务重试配置
61
+ def self.default_retry_mode
62
+ RetryMode::DELAYED
63
+ end
64
+
65
+ def self.default_retry_count
66
+ 2 # Media 上传重试次数较少
67
+ end
68
+
69
+ def self.default_retry_delay
70
+ 5 # 延迟 5 秒
71
+ end
72
+
73
+ protected
74
+
75
+ # 构建任务参数(供其他任务使用)
76
+ def build_task_param
77
+ return {} unless @status == TaskStatus::SUCCESS && @result
78
+
79
+ {
80
+ success_urls: @result[:success_urls],
81
+ failed_files: @result[:failed_files],
82
+ all_urls: @result[:all_urls],
83
+ commit_log_id: @result[:commit_log_id],
84
+ git_commit_id: @result[:git_commit_id]
85
+ }
86
+ end
87
+
88
+ def do_work
89
+ # 1. 查找 git 仓库根目录
90
+ git_root = find_git_root(@project_path)
91
+ unless git_root
92
+ raise "未找到 git 仓库,请确保 project_path 在 git 仓库内"
93
+ end
94
+
95
+ # 2. 如果没有提供 git_commit_id,自动获取 HEAD 信息
96
+ if @git_commit_id.nil? || @git_commit_id.empty?
97
+ git_info = get_git_head_info(git_root)
98
+ @git_commit_id = git_info[:commit_id]
99
+ @git_commit_time = git_info[:commit_time]
100
+ @git_commit_desc = git_info[:commit_desc]
101
+ end
102
+
103
+ # 验证 git_commit_id
104
+ if @git_commit_id.nil? || @git_commit_id.empty?
105
+ raise "无法获取 git commit id,请确保在 git 仓库中运行"
106
+ end
107
+
108
+ # 3. 打印 git commit 信息
109
+ puts
110
+ puts " ===== Git Commit 信息 ====="
111
+ puts " Commit ID: #{@git_commit_id}"
112
+ puts " Commit Time: #{@git_commit_time}" if @git_commit_time
113
+ puts " Commit Desc: #{@git_commit_desc}" if @git_commit_desc
114
+ puts " " + "=" * 28
115
+ puts
116
+
117
+ # 4. 如果 file_paths 为空,自动查找 JPSMedia 目录
118
+ if @file_paths.nil? || @file_paths.empty?
119
+ @file_paths = find_media_files(git_root)
120
+ end
121
+
122
+ # 过滤存在的文件
123
+ existing_files = @file_paths.select { |f| File.exist?(f) }
124
+ if existing_files.empty?
125
+ puts " 没有找到有效的 media 文件"
126
+ puts " 提示: 请在项目根目录创建 JPSMedia/ 目录并放入要上传的图片或视频文件"
127
+ return {
128
+ success: false,
129
+ success_urls: [],
130
+ failed_files: @file_paths,
131
+ existing_urls: [],
132
+ all_urls: [],
133
+ commit_log_id: nil,
134
+ git_commit_id: @git_commit_id,
135
+ update_success: false
136
+ }
137
+ end
138
+
139
+ puts " 准备上传 #{existing_files.size} 个文件"
140
+ existing_files.each_with_index do |file, index|
141
+ puts " #{index + 1}. #{File.basename(file)}"
142
+ end
143
+ puts
144
+
145
+ # 5. 确保 PgyerHelper 已登录
146
+ pgyer_helper = PgyerHelper.share_instace
147
+ unless pgyer_helper.login
148
+ raise "JPS 登录失败"
149
+ end
150
+
151
+ # 6. 调用 PgyerHelper 的 start_media_upload 方法
152
+ upload_result = pgyer_helper.start_media_upload(
153
+ file_paths: existing_files,
154
+ git_commit_id: @git_commit_id,
155
+ workflow_id: @workflow_id
156
+ )
157
+
158
+ # 7. 判断是否成功
159
+ if upload_result[:success_urls].any?
160
+ # 上传成功后,将重试次数设为 0
161
+ @retry_count = 0
162
+
163
+ {
164
+ success: true,
165
+ success_urls: upload_result[:success_urls],
166
+ failed_files: upload_result[:failed_files],
167
+ existing_urls: upload_result[:existing_urls],
168
+ all_urls: upload_result[:all_urls],
169
+ commit_log_id: upload_result[:commit_log_id],
170
+ git_commit_id: upload_result[:git_commit_id],
171
+ update_success: upload_result[:update_success]
172
+ }
173
+ elsif upload_result[:commit_log_id].nil?
174
+ # 未找到 commit_log 记录,不重试
175
+ @retry_count = 0
176
+ raise "未找到 git commit id 对应的 JPS 提交记录"
177
+ else
178
+ raise "所有文件上传失败"
179
+ end
180
+ end
181
+
182
+ private
183
+
184
+ # 查找 git 仓库根目录
185
+ # @param path [String] 起始路径
186
+ # @return [String, nil] git 仓库根目录路径,未找到返回 nil
187
+ def find_git_root(path)
188
+ current = File.expand_path(path)
189
+ while current != '/'
190
+ if File.exist?(File.join(current, '.git'))
191
+ return current
192
+ end
193
+ current = File.dirname(current)
194
+ end
195
+ nil
196
+ end
197
+
198
+ # 获取 git HEAD 信息
199
+ # @param git_root [String] git 仓库根目录
200
+ # @return [Hash] 包含 :commit_id, :commit_time, :commit_desc
201
+ def get_git_head_info(git_root)
202
+ result = {
203
+ commit_id: nil,
204
+ commit_time: nil,
205
+ commit_desc: nil
206
+ }
207
+
208
+ Dir.chdir(git_root) do
209
+ # 获取 HEAD commit id
210
+ commit_id = `git rev-parse HEAD 2>/dev/null`.strip
211
+ result[:commit_id] = commit_id unless commit_id.empty?
212
+
213
+ # 获取 commit time (ISO 8601 格式)
214
+ commit_time = `git log -1 --format=%ci 2>/dev/null`.strip
215
+ result[:commit_time] = commit_time unless commit_time.empty?
216
+
217
+ # 获取 commit message (第一行)
218
+ commit_desc = `git log -1 --format=%s 2>/dev/null`.strip
219
+ result[:commit_desc] = commit_desc unless commit_desc.empty?
220
+ end
221
+
222
+ result
223
+ end
224
+
225
+ # 在 JPSMedia 目录下查找 media 文件
226
+ # @param git_root [String] git 仓库根目录
227
+ # @return [Array<String>] 找到的文件路径列表
228
+ def find_media_files(git_root)
229
+ jps_media_dir = File.join(git_root, 'JPSMedia')
230
+
231
+ unless File.directory?(jps_media_dir)
232
+ puts " 未找到 JPSMedia/ 目录: #{jps_media_dir}"
233
+ return []
234
+ end
235
+
236
+ puts " 在 #{jps_media_dir} 目录查找 media 文件..."
237
+
238
+ # 使用 glob 查找所有支持的媒体文件
239
+ pattern = File.join(jps_media_dir, "**", "*.{#{MEDIA_EXTENSIONS.join(',')}}")
240
+ files = Dir.glob(pattern, File::FNM_CASEFOLD)
241
+
242
+ # 过滤有效文件并去重
243
+ files.uniq.select { |f| File.file?(f) }
244
+ end
245
+
246
+ end
247
+ end
248
+ end
@@ -1,4 +1,4 @@
1
- require 'pindo/module/task/pindo_task'
1
+ require 'pindo/module/task/model/jps_task'
2
2
  require 'pindo/module/task/task_config'
3
3
  require 'pindo/module/pgyer/pgyerhelper'
4
4
 
@@ -6,24 +6,12 @@ module Pindo
6
6
  module TaskSystem
7
7
  # JPS 上传任务
8
8
  # 上传构建产物到 JPS 测试平台
9
- class JPSUploadTask < PindoTask
9
+ class JPSUploadTask < JPSTask
10
10
  attr_reader :file_type, :upload_path, :upload_file
11
11
 
12
- def self.task_type
13
- :upload
14
- end
15
-
16
- # 重试配置
17
- def self.default_retry_mode
18
- RetryMode::DELAYED # 延迟重试
19
- end
20
-
21
- def self.default_retry_count
22
- 3 # 默认可以重试 3 次
23
- end
24
-
25
- def self.default_retry_delay
26
- 10 # 默认延迟 10 秒
12
+ # 任务键
13
+ def self.task_key
14
+ :jps_upload
27
15
  end
28
16
 
29
17
  # 初始化上传任务
@@ -39,11 +27,6 @@ module Pindo
39
27
  @file_type = file_type # 'ipa' | 'apk' | 'html' | 'app'
40
28
  @upload_path = upload_path # 搜索文件的路径
41
29
  @upload_file = upload_file # 要上传的文件(nil 表示自动查找)
42
-
43
- # 可选参数(如果为 nil,在 do_work 中延迟获取)
44
- @app_info_obj = options[:app_info_obj]
45
- @workflow_info = options[:workflow_info]
46
- @project_name = options[:project_name]
47
30
  @upload_desc = options[:upload_desc] # 上传描述
48
31
 
49
32
  # 设置上传任务的优先级为 LOW,确保在构建任务之后执行
@@ -87,6 +70,19 @@ module Pindo
87
70
 
88
71
  protected
89
72
 
73
+ # 构建任务参数(供其他任务使用)
74
+ def build_task_param
75
+ # 只有在任务成功完成后才返回有效数据
76
+ return {} unless @status == TaskStatus::SUCCESS && @result
77
+
78
+ {
79
+ app_version_info: @result[:app_version_info],
80
+ app_info_obj: @result[:app_info_obj],
81
+ file_type: @result[:file_type],
82
+ file_path: @result[:file_path]
83
+ }
84
+ end
85
+
90
86
  def do_work
91
87
  # 1. 确定上传文件
92
88
  if @upload_file && !@upload_file.empty? && File.exist?(@upload_file)
@@ -106,16 +102,22 @@ module Pindo
106
102
 
107
103
  # 2. 如果没有 JPS 配置,延迟获取
108
104
  if @app_info_obj.nil? || @workflow_info.nil?
109
- fetch_jps_config(file_to_upload)
105
+ package_type = @file_type == 'html' ? 'zip' : @file_type
106
+ @app_info_obj, @workflow_info = fetch_jps_config(
107
+ working_directory: @upload_path,
108
+ package_type: package_type
109
+ )
110
110
  end
111
111
 
112
112
  # 3. 上传到 JPS
113
- upload_to_jps(file_to_upload)
113
+ app_version_info = upload_to_jps(file_to_upload)
114
114
 
115
115
  {
116
116
  success: true,
117
117
  file_type: @file_type,
118
- file_path: file_to_upload
118
+ file_path: file_to_upload,
119
+ app_version_info: app_version_info,
120
+ app_info_obj: @app_info_obj
119
121
  }
120
122
  end
121
123
 
@@ -152,18 +154,15 @@ module Pindo
152
154
  end
153
155
  end
154
156
 
155
- # 延迟获取 JPS 配置
156
- def fetch_jps_config(file_path)
157
+ # 延迟获取 JPS 配置(上传任务专用)
158
+ # @return [Array] 返回 [app_info_obj, workflow_info]
159
+ def fetch_jps_config(working_directory: Dir.pwd, package_type: nil)
157
160
  puts " 获取 JPS 配置..."
158
161
 
159
- # 根据 file_type 确定 package_type
160
- package_type = @file_type == 'html' ? 'zip' : @file_type
161
-
162
- # 获取项目目录(从文件路径推断)
163
- working_directory = @upload_path
162
+ pgyer_helper = PgyerHelper.share_instace
164
163
 
165
- # 调用 PgyerHelper 获取配置
166
- @app_info_obj, @workflow_info = PgyerHelper.share_instace.prepare_upload(
164
+ # 上传任务需要 package_type 和 workflow_info
165
+ @app_info_obj, @workflow_info = pgyer_helper.prepare_upload(
167
166
  working_directory: working_directory,
168
167
  proj_name: @project_name,
169
168
  package_type: package_type
@@ -172,9 +171,12 @@ module Pindo
172
171
  unless @app_info_obj && @workflow_info
173
172
  raise "无法获取 JPS 配置"
174
173
  end
174
+
175
+ [@app_info_obj, @workflow_info]
175
176
  end
176
177
 
177
178
  # 上传到 JPS 测试平台
179
+ # @return [Hash] 应用版本信息
178
180
  def upload_to_jps(file_path)
179
181
  pgyer_helper = PgyerHelper.share_instace
180
182
 
@@ -197,67 +199,10 @@ module Pindo
197
199
 
198
200
  app_version_info = result_data["data"]
199
201
 
200
- # 处理上传成功后的操作
201
- handle_post_upload_actions(app_version_info)
202
+ # 返回版本信息,由外部创建 JPSMessageTask 处理消息发送
203
+ app_version_info
202
204
  end
203
205
 
204
- # 处理上传成功后的操作
205
- # @param app_version_info [Hash] 应用版本信息
206
- def handle_post_upload_actions(app_version_info)
207
- puts "\n 📋 开始处理上传后续操作..."
208
-
209
- begin
210
- pgyer_helper = PgyerHelper.share_instace
211
-
212
- # 打印应用版本信息(失败只警告,不中断)
213
- begin
214
- puts " 📝 打印应用版本信息..."
215
- pgyer_helper.print_app_version_info(
216
- app_info_obj: @app_info_obj,
217
- app_version_info_obj: app_version_info
218
- )
219
- puts " ✓ 应用版本信息打印成功"
220
- rescue => e
221
- puts " ⚠️ 打印应用版本信息失败: #{e.message}"
222
- end
223
-
224
- # 发送消息给自己(失败只警告,不中断)
225
- begin
226
- puts " 📨 发送消息给自己..."
227
- pgyer_helper.send_apptest_msg(
228
- app_info_obj: @app_info_obj,
229
- app_version_info_obj: app_version_info,
230
- receiveType: "self"
231
- )
232
- puts " ✓ 消息发送成功"
233
- rescue => e
234
- puts " ⚠️ 发送消息给自己失败: #{e.message}"
235
- end
236
-
237
- # 如果需要发送到测试群(失败只警告,不中断)
238
- if @context[:send_to_chat]
239
- begin
240
- puts " 📢 发送消息到测试群..."
241
- pgyer_helper.send_apptest_msg(
242
- app_info_obj: @app_info_obj,
243
- app_version_info_obj: app_version_info,
244
- chatEnv: "DevTest",
245
- receiveType: "chat"
246
- )
247
- puts " ✓ 测试群消息发送成功"
248
- rescue => e
249
- puts " ⚠️ 发送消息到测试群失败: #{e.message}"
250
- end
251
- end
252
-
253
- puts " ✅ 上传后续操作全部完成\n"
254
- rescue => e
255
- # 外层错误保护:任何未预期的错误都不应影响上传任务的成功状态
256
- puts " ⚠️ 上传后续操作发生未预期错误: #{e.message}"
257
- puts " ⚠️ 错误堆栈: #{e.backtrace.first(3).join("\n ")}" if e.backtrace
258
- puts " ℹ️ 上传已成功,后续操作失败不影响上传结果\n"
259
- end
260
- end
261
206
  end
262
207
  end
263
208
  end
@@ -0,0 +1,43 @@
1
+ require 'pindo/module/task/pindo_task'
2
+ require 'pindo/module/pgyer/pgyerhelper'
3
+
4
+ module Pindo
5
+ module TaskSystem
6
+ # JPS 任务基类
7
+ # 所有 JPS 相关任务的父类,提供通用的 JPS 操作和配置
8
+ class JPSTask < PindoTask
9
+ attr_reader :app_info_obj, :workflow_info, :project_name
10
+
11
+ def initialize(name, options = {})
12
+ @app_info_obj = options[:app_info_obj]
13
+ @workflow_info = options[:workflow_info]
14
+ @project_name = options[:project_name]
15
+
16
+ super(name, options)
17
+ end
18
+
19
+ # JPS 任务类型
20
+ def self.task_type
21
+ :jps
22
+ end
23
+
24
+ # JPS 任务类型显示名称
25
+ def self.task_type_name
26
+ "JPS操作"
27
+ end
28
+
29
+ # JPS 任务默认重试配置
30
+ def self.default_retry_mode
31
+ RetryMode::DELAYED # 延迟重试
32
+ end
33
+
34
+ def self.default_retry_count
35
+ 3 # 默认重试 3 次
36
+ end
37
+
38
+ def self.default_retry_delay
39
+ 10 # 默认延迟 10 秒
40
+ end
41
+ end
42
+ end
43
+ end
@@ -13,6 +13,11 @@ module Pindo
13
13
  :resign
14
14
  end
15
15
 
16
+ # 任务类型显示名称
17
+ def self.task_type_name
18
+ "重签名"
19
+ end
20
+
16
21
  # 重试配置
17
22
  def self.default_retry_mode
18
23
  RetryMode::DELAYED
@@ -8,10 +8,6 @@ module Pindo
8
8
  class UnityConfigTask < UnityTask
9
9
  attr_reader :deploy_mode
10
10
 
11
- def self.task_type
12
- :unity_config
13
- end
14
-
15
11
  # @param deploy_mode [String] 部署模式 ('dev', 'adhoc', 'release')
16
12
  # @param options [Hash] 额外选项
17
13
  # - :project_path [String] Unity 项目路径(默认当前目录)
@@ -8,7 +8,8 @@ module Pindo
8
8
  class UnityExportTask < UnityTask
9
9
  attr_reader :platform, :export_path, :deploy_mode, :is_library_mode
10
10
 
11
- def self.task_type
11
+ # 任务键
12
+ def self.task_key
12
13
  :unity_export
13
14
  end
14
15
 
@@ -28,18 +29,18 @@ module Pindo
28
29
 
29
30
  name = case platform
30
31
  when 'ios', 'ipa'
31
- "Unity 导出 iOS"
32
+ "Unity导出iOS平台"
32
33
  when 'android', 'apk'
33
- "Unity 导出 Android"
34
+ "Unity导出Android平台"
34
35
  when 'web', 'html'
35
- "Unity 导出 WebGL"
36
+ "Unity导出WebGL平台"
36
37
  else
37
- "Unity 导出 #{platform.upcase}"
38
+ "Unity导出#{platform.upcase}平台"
38
39
  end
39
40
 
40
41
  # 传递 project_path 给基类
41
- project_path = options[:project_path] || Dir.pwd
42
- super(name, project_path: project_path, options: options)
42
+ options[:project_path] ||= Dir.pwd
43
+ super(name, options)
43
44
  end
44
45
 
45
46
  def validate
@@ -6,7 +6,8 @@ module Pindo
6
6
  # Unity 更新必备库任务
7
7
  # 用于强制更新 Unity 项目的必备库(NugetForUnity)
8
8
  class UnityUpdateTask < UnityTask
9
- def self.task_type
9
+ # 任务键
10
+ def self.task_key
10
11
  :unity_update
11
12
  end
12
13
 
@@ -16,8 +17,8 @@ module Pindo
16
17
  @unity_exe_path = nil # 将在 do_work 中自动查找
17
18
 
18
19
  # 传递 project_path 给基类
19
- project_path = options[:project_path] || Dir.pwd
20
- super("Unity工具库更新", project_path: project_path, options: options)
20
+ options[:project_path] ||= Dir.pwd
21
+ super("Unity工具库更新", options)
21
22
  end
22
23
 
23
24
  def validate
@@ -8,7 +8,8 @@ module Pindo
8
8
  class UnityYooAssetTask < UnityTask
9
9
  attr_reader :platform
10
10
 
11
- def self.task_type
11
+ # 任务键
12
+ def self.task_key
12
13
  :unity_yoo_asset
13
14
  end
14
15
 
@@ -21,18 +22,18 @@ module Pindo
21
22
 
22
23
  name = case platform
23
24
  when 'ios', 'ipa'
24
- "Unity资源Yoo 打包 iOS"
25
+ "YooAsset打包iOS平台资源"
25
26
  when 'android', 'apk'
26
- "Unity资源Yoo 打包 Android"
27
+ "YooAsset打包Android平台资源"
27
28
  when 'web', 'html'
28
- "Unity资源Yoo 打包 WebGL"
29
+ "YooAsset打包WebGL平台资源"
29
30
  else
30
- "Unity资源Yoo 打包 #{platform.upcase}"
31
+ "YooAsset打包#{platform.upcase}资源"
31
32
  end
32
33
 
33
34
  # 传递 project_path 给基类
34
- project_path = options[:project_path] || Dir.pwd
35
- super(name, project_path: project_path, options: options)
35
+ options[:project_path] ||= Dir.pwd
36
+ super(name, options)
36
37
  end
37
38
 
38
39
  def validate
@@ -9,8 +9,8 @@ module Pindo
9
9
  class UnityTask < PindoTask
10
10
  attr_reader :project_path, :unity_root_path
11
11
 
12
- def initialize(name, project_path:, options: {})
13
- @project_path = File.expand_path(project_path)
12
+ def initialize(name, options = {})
13
+ @project_path = options[:project_path] ? File.expand_path(options[:project_path]) : nil
14
14
  @unity_root_path = options[:unity_root_path] || @project_path
15
15
 
16
16
  super(name, options)
@@ -21,6 +21,11 @@ module Pindo
21
21
  :unity
22
22
  end
23
23
 
24
+ # Unity 任务类型显示名称
25
+ def self.task_type_name
26
+ "Unity操作"
27
+ end
28
+
24
29
  # Unity 任务默认重试配置
25
30
  def self.default_retry_mode
26
31
  RetryMode::DELAYED