pindo 5.14.6 → 5.14.7
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 +1 -1
- data/lib/pindo/command/ios/autobuild.rb +1 -1
- data/lib/pindo/command/unity/autobuild.rb +1 -1
- data/lib/pindo/command/web/autobuild.rb +1 -1
- data/lib/pindo/module/appselect.rb +14 -0
- data/lib/pindo/module/pgyer/pgyerhelper.rb +73 -1
- data/lib/pindo/module/task/model/jps/jps_bind_package_task.rb +9 -6
- data/lib/pindo/options/groups/build_options.rb +3 -2
- data/lib/pindo/version.rb +1 -1
- metadata +5 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0e61c4fa7bc1f944011a7d2da6ea5f88e6964cf4156fbfc820a82f87f8376b15
|
|
4
|
+
data.tar.gz: '0826f4b21c1fdd8145763b8357dddfa7f6c06a461b128bb458b7c75886ba5208'
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: a1379dd0f212e82aad3c889d9c06374810441728700616d9a2293c647bbe0272318d744dcfd4056edf69d8bde847a9394225c334a3909e419f34321d38d9f29f
|
|
7
|
+
data.tar.gz: df9c68524dbdbd81f29e3134c9b1a25de3e6fc57e29346b5beae93bcccb8ac1186bbfe7e3f4a86dbfb81ebc5356f91eeb852cf9a6f504144225c3715e9a63975
|
|
@@ -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, :
|
|
92
|
+
Pindo::Options::JPSOptions.select(:proj, :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),
|
|
@@ -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, :
|
|
103
|
+
Pindo::Options::JPSOptions.select(:proj, :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),
|
|
@@ -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),
|
|
103
|
+
Pindo::Options::JPSOptions.select(:proj, :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),
|
|
@@ -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),
|
|
96
|
+
Pindo::Options::JPSOptions.select(:proj, :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),
|
|
@@ -239,6 +239,13 @@ module Pindo
|
|
|
239
239
|
puts "选择的Bundle Name是: #{menu_choice}"
|
|
240
240
|
puts
|
|
241
241
|
|
|
242
|
+
# 去除通配符后缀(如 com.test.* -> com.test)
|
|
243
|
+
if menu_choice.end_with?(".*")
|
|
244
|
+
menu_choice = menu_choice.sub(/\.\*$/, '')
|
|
245
|
+
puts "去除通配符后的Bundle Name: #{menu_choice}"
|
|
246
|
+
puts
|
|
247
|
+
end
|
|
248
|
+
|
|
242
249
|
# 保存选择到 GlobalOptionsState
|
|
243
250
|
state[:bundle_name] = menu_choice
|
|
244
251
|
|
|
@@ -270,6 +277,13 @@ module Pindo
|
|
|
270
277
|
puts "选择的Bundle Name是: #{menu_choice}"
|
|
271
278
|
puts
|
|
272
279
|
|
|
280
|
+
# 去除通配符后缀(如 com.test.* -> com.test)
|
|
281
|
+
if menu_choice.end_with?(".*")
|
|
282
|
+
menu_choice = menu_choice.sub(/\.\*$/, '')
|
|
283
|
+
puts "去除通配符后的Bundle Name: #{menu_choice}"
|
|
284
|
+
puts
|
|
285
|
+
end
|
|
286
|
+
|
|
273
287
|
return menu_choice
|
|
274
288
|
end
|
|
275
289
|
|
|
@@ -1551,11 +1551,83 @@ module Pindo
|
|
|
1551
1551
|
end
|
|
1552
1552
|
end
|
|
1553
1553
|
|
|
1554
|
-
#
|
|
1554
|
+
# 获取特定 commit 已绑定的包 ID
|
|
1555
1555
|
#
|
|
1556
|
+
# @param commit_id [String] Git commit SHA(必需)
|
|
1557
|
+
# @param workflow_id [Integer, String] 工作流 ID(必需,API 需要)
|
|
1558
|
+
# @return [Array<String>] 已绑定的包 ID 数组
|
|
1559
|
+
def get_commit_bound_package_ids(commit_id:, workflow_id:)
|
|
1560
|
+
return [] if commit_id.nil? || commit_id.empty?
|
|
1561
|
+
return [] if workflow_id.nil?
|
|
1562
|
+
|
|
1563
|
+
begin
|
|
1564
|
+
# 使用 commit_log/preview API 直接查询特定 commit
|
|
1565
|
+
result = @pgyer_client.get_commit_log_preview(
|
|
1566
|
+
workflowId: workflow_id,
|
|
1567
|
+
commitIds: [commit_id],
|
|
1568
|
+
params: { onlyCliff: false } # 需要完整信息
|
|
1569
|
+
)
|
|
1570
|
+
|
|
1571
|
+
# 兼容两种响应格式
|
|
1572
|
+
response_code = result&.dig("code") || result&.dig("meta", "code")
|
|
1573
|
+
|
|
1574
|
+
if result && (response_code == 0 || response_code == 200)
|
|
1575
|
+
# 从响应中提取 commit 信息
|
|
1576
|
+
# preview API 可能返回数组或单个对象
|
|
1577
|
+
commit_data = result&.dig("data")
|
|
1578
|
+
commit_list = commit_data.is_a?(Array) ? commit_data : [commit_data].compact
|
|
1579
|
+
|
|
1580
|
+
# 查找匹配的 commit
|
|
1581
|
+
commit_info = commit_list.find { |item| item && item["commitId"] == commit_id }
|
|
1582
|
+
|
|
1583
|
+
if commit_info && commit_info["bindVersions"]
|
|
1584
|
+
# 从 bindVersions 中提取所有平台的 projectPackageId
|
|
1585
|
+
bind_versions = commit_info["bindVersions"]
|
|
1586
|
+
package_ids = []
|
|
1587
|
+
|
|
1588
|
+
# 遍历所有平台(ipa, apk, zip, mac, exe 等)
|
|
1589
|
+
bind_versions.each do |_platform, version_info|
|
|
1590
|
+
if version_info && version_info["projectPackageId"]
|
|
1591
|
+
package_ids << version_info["projectPackageId"]
|
|
1592
|
+
end
|
|
1593
|
+
end
|
|
1594
|
+
|
|
1595
|
+
return package_ids.compact.uniq
|
|
1596
|
+
else
|
|
1597
|
+
# 如果没有找到或没有绑定信息,返回空数组(可能是首次绑定)
|
|
1598
|
+
if ENV['PINDO_DEBUG']
|
|
1599
|
+
puts "[PINDO_DEBUG] Commit #{commit_id[0..7]} 没有绑定信息"
|
|
1600
|
+
end
|
|
1601
|
+
return []
|
|
1602
|
+
end
|
|
1603
|
+
else
|
|
1604
|
+
# 如果获取失败,返回空数组(不阻止绑定流程)
|
|
1605
|
+
if ENV['PINDO_DEBUG']
|
|
1606
|
+
error_msg = result&.dig("msg") || result&.dig("meta", "message") || "未知错误"
|
|
1607
|
+
puts "[PINDO_DEBUG] 获取 commit 绑定包失败: #{error_msg}"
|
|
1608
|
+
end
|
|
1609
|
+
return []
|
|
1610
|
+
end
|
|
1611
|
+
rescue => e
|
|
1612
|
+
# 异常时返回空数组,不阻止绑定流程
|
|
1613
|
+
if ENV['PINDO_DEBUG']
|
|
1614
|
+
puts "[PINDO_DEBUG] 获取 commit 绑定包异常: #{e.message}"
|
|
1615
|
+
puts "[PINDO_DEBUG] Backtrace: #{e.backtrace[0..2].join("\n")}"
|
|
1616
|
+
end
|
|
1617
|
+
return []
|
|
1618
|
+
end
|
|
1619
|
+
end
|
|
1620
|
+
|
|
1621
|
+
# 获取工作流中已绑定的包 ID(已废弃,请使用 get_commit_bound_package_ids)
|
|
1622
|
+
#
|
|
1623
|
+
# @deprecated 使用 get_commit_bound_package_ids(commit_id:, workflow_id:) 替代
|
|
1556
1624
|
# @param workflow_id [Integer, String] 工作流 ID
|
|
1557
1625
|
# @return [Array<String>] 已绑定的包 ID 数组
|
|
1558
1626
|
def get_workflow_bound_package_ids(workflow_id:)
|
|
1627
|
+
if ENV['PINDO_DEBUG']
|
|
1628
|
+
puts "[PINDO_DEBUG] ⚠️ get_workflow_bound_package_ids 已废弃,请使用 get_commit_bound_package_ids"
|
|
1629
|
+
end
|
|
1630
|
+
|
|
1559
1631
|
return [] if workflow_id.nil?
|
|
1560
1632
|
|
|
1561
1633
|
begin
|
|
@@ -142,24 +142,27 @@ module Pindo
|
|
|
142
142
|
raise "缺少 workflow_info,无法获取 workflow_id"
|
|
143
143
|
end
|
|
144
144
|
|
|
145
|
-
# 7.
|
|
146
|
-
existing_bound_ids = pgyer_helper.
|
|
145
|
+
# 7. 获取当前 commit 已绑定的包 ID
|
|
146
|
+
existing_bound_ids = pgyer_helper.get_commit_bound_package_ids(
|
|
147
|
+
commit_id: @git_commit_id,
|
|
148
|
+
workflow_id: workflow_id
|
|
149
|
+
)
|
|
147
150
|
|
|
148
151
|
if existing_bound_ids.any?
|
|
149
|
-
puts " 📋
|
|
152
|
+
puts " 📋 当前 Commit 已绑定的包: #{existing_bound_ids.size} 个"
|
|
150
153
|
end
|
|
151
154
|
|
|
152
|
-
# 8.
|
|
155
|
+
# 8. 合并当前 commit 已绑定的 ID 和新上传的包 ID(去重)
|
|
153
156
|
merged_package_ids = (existing_bound_ids + project_package_ids).uniq
|
|
154
157
|
|
|
155
158
|
puts " 📦 合并后的包 ID 数量: #{merged_package_ids.size} 个"
|
|
156
159
|
if merged_package_ids.size > project_package_ids.size
|
|
157
160
|
puts " └─ 新增: #{project_package_ids.size} 个"
|
|
158
|
-
puts " └─
|
|
161
|
+
puts " └─ 已绑定: #{existing_bound_ids.size} 个"
|
|
159
162
|
end
|
|
160
163
|
puts ""
|
|
161
164
|
|
|
162
|
-
# 9.
|
|
165
|
+
# 9. 批量绑定所有包(API 是覆盖式,所以需要包含已绑定的)
|
|
163
166
|
Funlog.instance.fancyinfo_start("正在绑定 #{merged_package_ids.size} 个项目包...")
|
|
164
167
|
|
|
165
168
|
bind_result = pgyer_helper.bind_commit_to_package(
|
|
@@ -37,8 +37,9 @@ module Pindo
|
|
|
37
37
|
optional: true,
|
|
38
38
|
cacheable: true, # 存入文件缓存
|
|
39
39
|
verify_block: proc do |value|
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
# 允许标准格式(com.example.app)或带通配符格式(com.example.*)
|
|
41
|
+
unless value =~ /^[a-z][a-z0-9_]*(\.[a-z][a-z0-9_\*]*)+$/i
|
|
42
|
+
raise "Package Name 格式错误: #{value},应该类似 com.example.app 或 com.example.*"
|
|
42
43
|
end
|
|
43
44
|
end,
|
|
44
45
|
example: 'pindo android autobuild --bundle_name=com.example.app'
|
data/lib/pindo/version.rb
CHANGED
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.14.
|
|
4
|
+
version: 5.14.7
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- wade
|
|
@@ -189,20 +189,20 @@ dependencies:
|
|
|
189
189
|
requirements:
|
|
190
190
|
- - "~>"
|
|
191
191
|
- !ruby/object:Gem::Version
|
|
192
|
-
version: '1.
|
|
192
|
+
version: '1.9'
|
|
193
193
|
- - ">="
|
|
194
194
|
- !ruby/object:Gem::Version
|
|
195
|
-
version: 1.
|
|
195
|
+
version: 1.9.0
|
|
196
196
|
type: :runtime
|
|
197
197
|
prerelease: false
|
|
198
198
|
version_requirements: !ruby/object:Gem::Requirement
|
|
199
199
|
requirements:
|
|
200
200
|
- - "~>"
|
|
201
201
|
- !ruby/object:Gem::Version
|
|
202
|
-
version: '1.
|
|
202
|
+
version: '1.9'
|
|
203
203
|
- - ">="
|
|
204
204
|
- !ruby/object:Gem::Version
|
|
205
|
-
version: 1.
|
|
205
|
+
version: 1.9.0
|
|
206
206
|
- !ruby/object:Gem::Dependency
|
|
207
207
|
name: bundler
|
|
208
208
|
requirement: !ruby/object:Gem::Requirement
|