70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
|
# File 'lib/pindo/command/jps/bind.rb', line 70
def run
project_path = Dir.pwd
selected_commit_info = nil
if @args_select_flag
selected_commit_info = select_git_commit(project_path)
if selected_commit_info.nil?
puts "未选择任何提交,已取消操作"
return
end
puts "\n已选择提交:"
puts " Commit ID: #{selected_commit_info[:commit_id][0..7]}"
puts " 时间: #{selected_commit_info[:commit_time]}"
puts " 描述: #{selected_commit_info[:commit_desc]}"
puts ""
end
pgyer_helper = PgyerHelper.share_instace
pgyer_helper.login
app_info_obj, git_workflow_info = pgyer_helper.prepare_upload(
working_directory: project_path,
conf: @args_conf,
package_type: nil,
manage_type: "git"
)
if app_info_obj.nil?
raise Informative, "未找到 JPS 项目,请检查配置文件或重新选择"
end
project_id = app_info_obj["id"]
selected_package_types = select_package_types
if selected_package_types.empty?
puts "未选择任何包类型,已取消操作"
return
end
app_version_list = get_latest_packages_by_types(pgyer_helper, project_id, selected_package_types)
if app_version_list.empty?
raise Informative, "未找到可绑定的项目包,请先上传包"
end
puts "\n找到以下项目包:"
app_version_list.each do |pkg|
puts " [#{pkg['nativePackageType']}] ID: #{pkg['id']}, Version: #{pkg['projectVersion']}, Build: #{pkg['build']}"
end
puts ""
tasks = []
process_type = Pindo::GitHandler.get_uncommitted_files_process_type(
project_dir: project_path,
interactive: @args_git_commit.nil?,
default_process_type: @args_git_commit
)
git_commit_task = Pindo::TaskSystem::GitCommitTask.new(
project_path,
{
process_type: process_type,
commit_message: "build: jps bind 绑定前提交"
}
)
tasks << git_commit_task
bind_task = Pindo::TaskSystem::JPSBindPackageTask.new(
app_version_list, {
git_commit_id: selected_commit_info&.dig(:commit_id),
git_commit_time: selected_commit_info&.dig(:commit_time),
git_commit_desc: selected_commit_info&.dig(:commit_desc),
project_dir: project_path,
app_info_obj: app_info_obj,
workflow_info: git_workflow_info,
project_name: nil
}
)
bind_task.dependencies << git_commit_task.id
tasks << bind_task
task_manager = Pindo::TaskSystem::TaskManager.instance
task_manager.clear_all
tasks.each { |task| task_manager.add_task(task) }
task_manager.start
report = task_manager.execution_report
if report[:success] > 0
puts "\n✅ 绑定完成! 成功绑定 #{app_version_list.size} 个包到 Git Workflow"
else
raise Informative, "绑定失败"
end
end
|