pindo 5.19.1 → 5.19.3
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/base/git_handler.rb +11 -6
- data/lib/pindo/command/android/autobuild.rb +8 -4
- data/lib/pindo/command/ios/autobuild.rb +8 -4
- data/lib/pindo/command/unity/autobuild.rb +1 -1
- data/lib/pindo/command/unity/packbuild.rb +26 -4
- data/lib/pindo/command/unity/packpush.rb +13 -6
- data/lib/pindo/command/web/autobuild.rb +8 -4
- data/lib/pindo/options/groups/unity_options.rb +1 -1
- data/lib/pindo/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 5a77caec349df71376df7ea433567423ae745f767297fb29377e265f123b63d8
|
|
4
|
+
data.tar.gz: 5f8040b7e13937405b635906ad34dcd4466af83292d65b823968d22fce9f3081
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9fb90c4d057aab583df7780e4e8880c47507da9c64f9b05dfb48b778c87ae1695cf33711c6b777ad6540284f97a101ba5c28f10e8d6a91dfc6243b6a4a25843f
|
|
7
|
+
data.tar.gz: 57f746e6f8a01dcebab6615d1e30de5d7b6a1eb2b221bf8db50a10c66a0aab240279064b86f89bef7e0ccace8186eaf87da42a008a2f50f2a403f0d5ee5ec593
|
|
@@ -216,12 +216,17 @@ module Pindo
|
|
|
216
216
|
def remote_tag_commit(local_repo_dir: nil, tag_name: nil)
|
|
217
217
|
return nil if local_repo_dir.nil? || !File.exist?(local_repo_dir)
|
|
218
218
|
tag_ref = "refs/tags/#{tag_name}"
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
#
|
|
223
|
-
|
|
224
|
-
|
|
219
|
+
peeled_ref = "#{tag_ref}^{}"
|
|
220
|
+
# annotated tag 需要 ^{} 解引用行才能拿到真实 commit;但只传 tag_ref 精确过滤时,
|
|
221
|
+
# git ls-remote 不会附带 ^{} 行,必须显式把 peeled_ref 一起传入才能拿到它
|
|
222
|
+
res_data = git_remote!(local_repo_dir, %W(-C #{local_repo_dir} ls-remote --tags origin #{tag_ref} #{peeled_ref}))
|
|
223
|
+
entries = res_data.to_s.lines.map { |l| l.strip.split(/\s+/, 2) }
|
|
224
|
+
.select { |sha, ref| sha && ref }
|
|
225
|
+
return nil if entries.empty?
|
|
226
|
+
# 优先取 ^{} 行(annotated tag 的真实 commit);lightweight tag 只有 tag_ref 行且本身即 commit
|
|
227
|
+
peeled = entries.find { |_sha, ref| ref == peeled_ref }
|
|
228
|
+
plain = entries.find { |_sha, ref| ref == tag_ref }
|
|
229
|
+
(peeled || plain)&.first
|
|
225
230
|
end
|
|
226
231
|
|
|
227
232
|
def remote_tag_exists?(local_repo_dir: nil, tag_name: nil)
|
|
@@ -98,7 +98,7 @@ module Pindo
|
|
|
98
98
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
99
99
|
Pindo::Options::BuildOptions.select(:bundle_name, :release),
|
|
100
100
|
Pindo::Options::JPSOptions.select(:conf, :upload, :media, :bind, :send),
|
|
101
|
-
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
|
|
101
|
+
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo, :kill_unity),
|
|
102
102
|
Pindo::Options::UnityOptions.select_with_defaults(skipmacro: true),
|
|
103
103
|
Pindo::Options::TaskOptions.select(:multi),
|
|
104
104
|
Pindo::Options::GitOptions.all
|
|
@@ -130,6 +130,7 @@ module Pindo
|
|
|
130
130
|
# Unity 参数
|
|
131
131
|
@args_skip_lib = @options[:skiplib] || false
|
|
132
132
|
@args_skip_yoo = @options[:skipyoo] || false
|
|
133
|
+
@args_kill_unity = @options[:kill_unity] || false
|
|
133
134
|
|
|
134
135
|
# Task 参数
|
|
135
136
|
@args_multi_flag = @options[:multi] || false
|
|
@@ -313,7 +314,8 @@ module Pindo
|
|
|
313
314
|
# 2.1 Unity 更新必备库任务(可选)
|
|
314
315
|
unless @args_skip_lib
|
|
315
316
|
unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
|
|
316
|
-
project_path: config[:project_path]
|
|
317
|
+
project_path: config[:project_path],
|
|
318
|
+
auto_kill: @args_kill_unity
|
|
317
319
|
)
|
|
318
320
|
unity_update_task.dependencies << last_task.id
|
|
319
321
|
tasks << unity_update_task
|
|
@@ -324,7 +326,8 @@ module Pindo
|
|
|
324
326
|
unless @args_skip_yoo
|
|
325
327
|
unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
|
|
326
328
|
'android',
|
|
327
|
-
project_path: config[:project_path]
|
|
329
|
+
project_path: config[:project_path],
|
|
330
|
+
auto_kill: @args_kill_unity
|
|
328
331
|
)
|
|
329
332
|
unity_yoo_task.dependencies << last_task.id
|
|
330
333
|
tasks << unity_yoo_task
|
|
@@ -339,7 +342,8 @@ module Pindo
|
|
|
339
342
|
'android',
|
|
340
343
|
project_path: config[:project_path],
|
|
341
344
|
export_path: android_export_path,
|
|
342
|
-
context: unity_context
|
|
345
|
+
context: unity_context,
|
|
346
|
+
auto_kill: @args_kill_unity
|
|
343
347
|
)
|
|
344
348
|
unity_export_task.dependencies << last_task.id
|
|
345
349
|
tasks << unity_export_task
|
|
@@ -101,7 +101,7 @@ module Pindo
|
|
|
101
101
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
102
102
|
Pindo::Options::BuildOptions.select(:bundleid, :build_type),
|
|
103
103
|
Pindo::Options::JPSOptions.select(:conf, :upload, :media, :bind, :send),
|
|
104
|
-
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
|
|
104
|
+
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo, :kill_unity),
|
|
105
105
|
Pindo::Options::UnityOptions.select_with_defaults(skipmacro: true),
|
|
106
106
|
Pindo::Options::TaskOptions.select(:multi),
|
|
107
107
|
Pindo::Options::GitOptions.all
|
|
@@ -141,6 +141,7 @@ module Pindo
|
|
|
141
141
|
# Unity 参数
|
|
142
142
|
@args_skip_lib = @options[:skiplib] || false
|
|
143
143
|
@args_skip_yoo = @options[:skipyoo] || false
|
|
144
|
+
@args_kill_unity = @options[:kill_unity] || false
|
|
144
145
|
|
|
145
146
|
# Task 参数
|
|
146
147
|
@args_multi_flag = @options[:multi] || false
|
|
@@ -282,7 +283,8 @@ module Pindo
|
|
|
282
283
|
# 2.1 Unity 更新必备库任务(可选)
|
|
283
284
|
unless @args_skip_lib
|
|
284
285
|
unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
|
|
285
|
-
project_path: config[:project_path]
|
|
286
|
+
project_path: config[:project_path],
|
|
287
|
+
auto_kill: @args_kill_unity
|
|
286
288
|
)
|
|
287
289
|
unity_update_task.dependencies << last_task.id
|
|
288
290
|
tasks << unity_update_task
|
|
@@ -293,7 +295,8 @@ module Pindo
|
|
|
293
295
|
unless @args_skip_yoo
|
|
294
296
|
unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
|
|
295
297
|
'ios',
|
|
296
|
-
project_path: config[:project_path]
|
|
298
|
+
project_path: config[:project_path],
|
|
299
|
+
auto_kill: @args_kill_unity
|
|
297
300
|
)
|
|
298
301
|
unity_yoo_task.dependencies << last_task.id
|
|
299
302
|
tasks << unity_yoo_task
|
|
@@ -309,7 +312,8 @@ module Pindo
|
|
|
309
312
|
project_path: config[:project_path],
|
|
310
313
|
export_path: ios_export_path,
|
|
311
314
|
deploy_mode: @build_type, # 根据 build_type 传递部署模式
|
|
312
|
-
context: unity_context
|
|
315
|
+
context: unity_context,
|
|
316
|
+
auto_kill: @args_kill_unity
|
|
313
317
|
)
|
|
314
318
|
unity_export_task.dependencies << last_task.id
|
|
315
319
|
tasks << unity_export_task
|
|
@@ -38,6 +38,11 @@ module Pindo
|
|
|
38
38
|
|
|
39
39
|
$ pindo unity packbuild --ver-inc=patch # 打包并增加修订版本号
|
|
40
40
|
|
|
41
|
+
$ pindo unity packbuild --force # 非交互:自动确认版本号(CI 用)
|
|
42
|
+
|
|
43
|
+
# 等价于 --force,便于 CI 环境变量注入
|
|
44
|
+
$ PINDO_AUTO_CONFIRM=1 pindo unity packbuild
|
|
45
|
+
|
|
41
46
|
DESC
|
|
42
47
|
|
|
43
48
|
def self.arguments
|
|
@@ -46,7 +51,10 @@ module Pindo
|
|
|
46
51
|
|
|
47
52
|
# 定义此命令使用的参数项
|
|
48
53
|
def self.option_items
|
|
49
|
-
@option_items ||= Pindo::Options::
|
|
54
|
+
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
55
|
+
Pindo::Options::GitOptions.all,
|
|
56
|
+
Pindo::Options::CommonOptions.select(:force)
|
|
57
|
+
)
|
|
50
58
|
end
|
|
51
59
|
|
|
52
60
|
def self.options
|
|
@@ -55,20 +63,24 @@ module Pindo
|
|
|
55
63
|
|
|
56
64
|
def initialize(argv)
|
|
57
65
|
@options = initialize_options(argv)
|
|
58
|
-
|
|
66
|
+
|
|
59
67
|
# Git 参数
|
|
60
68
|
@args_release_branch = @options[:release_branch] || 'master'
|
|
61
69
|
@args_ver_inc = Pindo::Options::GitOptions.parse_version_increase_type(@options[:ver_inc])
|
|
62
70
|
@args_tag_type = Pindo::Options::GitOptions.parse_create_tag_type(@options[:tag_type])
|
|
63
71
|
@args_tag_pre = @options[:tag_pre] || 'v'
|
|
64
72
|
|
|
73
|
+
# 非交互:--force 或 PINDO_AUTO_CONFIRM 时自动确认版本号,不弹询问
|
|
74
|
+
@force_flag = @options[:force] || false
|
|
75
|
+
|
|
65
76
|
super
|
|
66
77
|
end
|
|
67
78
|
|
|
68
79
|
def run
|
|
69
80
|
package_dir = Dir.pwd
|
|
70
81
|
# 1. Git 提交任务 (确保工作区干净,或提交预构建更改)
|
|
71
|
-
#
|
|
82
|
+
# packbuild 会自动生成 Release Notes 并需提交,因此始终非交互、默认强制提交(不弹菜单);
|
|
83
|
+
# 选非 commit 会导致生成的 Release Notes 不被提交、tag 与内容不一致,故不开放交互菜单。
|
|
72
84
|
git_commit_opt = Pindo::Options::GitOptions.parse_git_commit_type(@options[:git_commit]) || Pindo::UncommittedFilesProcessType::COMMIT
|
|
73
85
|
|
|
74
86
|
process_type = Pindo::GitHandler.get_uncommitted_files_process_type(
|
|
@@ -117,7 +129,10 @@ module Pindo
|
|
|
117
129
|
# Tag 不存在或不在 HEAD,需要用户确认
|
|
118
130
|
puts ""
|
|
119
131
|
puts "即将编译 NuGet Package 的版本是 #{q.yellow}"
|
|
120
|
-
if
|
|
132
|
+
if non_interactive?
|
|
133
|
+
puts "自动确认版本号: #{q.yellow}(--force / PINDO_AUTO_CONFIRM)"
|
|
134
|
+
confirmed_version = q
|
|
135
|
+
elsif agree("确认是否继续? (Y/n)")
|
|
121
136
|
confirmed_version = q
|
|
122
137
|
else
|
|
123
138
|
puts ""
|
|
@@ -208,6 +223,13 @@ module Pindo
|
|
|
208
223
|
end
|
|
209
224
|
end
|
|
210
225
|
|
|
226
|
+
private
|
|
227
|
+
|
|
228
|
+
# 是否非交互模式:--force 参数或 PINDO_AUTO_CONFIRM 环境变量
|
|
229
|
+
def non_interactive?
|
|
230
|
+
@force_flag || (ENV['PINDO_AUTO_CONFIRM'] && !ENV['PINDO_AUTO_CONFIRM'].empty?)
|
|
231
|
+
end
|
|
232
|
+
|
|
211
233
|
end
|
|
212
234
|
end
|
|
213
235
|
end
|
|
@@ -40,6 +40,9 @@ module Pindo
|
|
|
40
40
|
|
|
41
41
|
# 批量上传(Shell 脚本)
|
|
42
42
|
$ for file in *.nupkg; do pindo unity packpush --force "$file"; done
|
|
43
|
+
|
|
44
|
+
# 等价于 --force,便于 CI 环境变量注入
|
|
45
|
+
$ PINDO_AUTO_CONFIRM=1 pindo unity packpush
|
|
43
46
|
DESC
|
|
44
47
|
|
|
45
48
|
def self.arguments
|
|
@@ -90,7 +93,8 @@ module Pindo
|
|
|
90
93
|
@args_nupkg_file = Pindo::Unity::NugetHelper.find_nupkg_file(package_dir)
|
|
91
94
|
|
|
92
95
|
# 如果没有找到文件,让用户手动输入
|
|
93
|
-
|
|
96
|
+
# 非交互(--force / PINDO_AUTO_CONFIRM)时不询问,直接进入后续报错,避免 CI 卡住
|
|
97
|
+
if !non_interactive? && (@args_nupkg_file.nil? || !File.exist?(@args_nupkg_file))
|
|
94
98
|
@args_nupkg_file = ask('需要上传的文件:') || nil
|
|
95
99
|
if @args_nupkg_file
|
|
96
100
|
@args_nupkg_file = @args_nupkg_file.strip.gsub(/\\ /, ' ')
|
|
@@ -126,14 +130,12 @@ module Pindo
|
|
|
126
130
|
# 检查是否需要跳过确认
|
|
127
131
|
# 支持两种方式:
|
|
128
132
|
# 1. --force 参数
|
|
129
|
-
# 2.
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
if force_upload
|
|
133
|
+
# 2. PINDO_AUTO_CONFIRM 环境变量
|
|
134
|
+
if non_interactive?
|
|
133
135
|
if @force_flag
|
|
134
136
|
puts "🚀 检测到 --force 参数,跳过确认直接上传..."
|
|
135
137
|
else
|
|
136
|
-
puts "🚀 检测到
|
|
138
|
+
puts "🚀 检测到 PINDO_AUTO_CONFIRM 环境变量,跳过确认直接上传..."
|
|
137
139
|
end
|
|
138
140
|
else
|
|
139
141
|
# 确认上传
|
|
@@ -165,6 +167,11 @@ module Pindo
|
|
|
165
167
|
|
|
166
168
|
private
|
|
167
169
|
|
|
170
|
+
# 是否非交互模式:--force 参数或 PINDO_AUTO_CONFIRM 环境变量
|
|
171
|
+
def non_interactive?
|
|
172
|
+
@force_flag || (ENV['PINDO_AUTO_CONFIRM'] && !ENV['PINDO_AUTO_CONFIRM'].empty?)
|
|
173
|
+
end
|
|
174
|
+
|
|
168
175
|
# 获取包信息(用于确认显示)
|
|
169
176
|
def get_package_info_for_upload(package_dir)
|
|
170
177
|
# 优先从 .nuspec 文件读取
|
|
@@ -94,7 +94,7 @@ module Pindo
|
|
|
94
94
|
@option_items ||= Pindo::Options::OptionGroup.merge(
|
|
95
95
|
Pindo::Options::BuildOptions.select(:bundleid),
|
|
96
96
|
Pindo::Options::JPSOptions.select(:conf, :upload, :send, :media, :bind),
|
|
97
|
-
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo),
|
|
97
|
+
Pindo::Options::UnityOptions.select(:skiplib, :skipyoo, :kill_unity),
|
|
98
98
|
Pindo::Options::UnityOptions.select_with_defaults(skipmacro: true),
|
|
99
99
|
Pindo::Options::TaskOptions.select(:multi),
|
|
100
100
|
Pindo::Options::UtilsOptions.select(:run),
|
|
@@ -128,6 +128,7 @@ module Pindo
|
|
|
128
128
|
# Unity 参数
|
|
129
129
|
@args_skip_lib = @options[:skiplib] || false
|
|
130
130
|
@args_skip_yoo = @options[:skipyoo] || false
|
|
131
|
+
@args_kill_unity = @options[:kill_unity] || false
|
|
131
132
|
|
|
132
133
|
# Task 参数
|
|
133
134
|
@args_multi_flag = @options[:multi] || false
|
|
@@ -283,7 +284,8 @@ module Pindo
|
|
|
283
284
|
# 3. Unity 更新必备库任务(可选)
|
|
284
285
|
unless @args_skip_lib
|
|
285
286
|
unity_update_task = Pindo::TaskSystem::UnityUpdateTask.new(
|
|
286
|
-
project_path: config[:project_path]
|
|
287
|
+
project_path: config[:project_path],
|
|
288
|
+
auto_kill: @args_kill_unity
|
|
287
289
|
)
|
|
288
290
|
unity_update_task.dependencies << last_task.id if last_task
|
|
289
291
|
tasks << unity_update_task
|
|
@@ -294,7 +296,8 @@ module Pindo
|
|
|
294
296
|
unless @args_skip_yoo
|
|
295
297
|
unity_yoo_task = Pindo::TaskSystem::UnityYooAssetTask.new(
|
|
296
298
|
'web',
|
|
297
|
-
project_path: config[:project_path]
|
|
299
|
+
project_path: config[:project_path],
|
|
300
|
+
auto_kill: @args_kill_unity
|
|
298
301
|
)
|
|
299
302
|
unity_yoo_task.dependencies << last_task.id if last_task
|
|
300
303
|
tasks << unity_yoo_task
|
|
@@ -313,7 +316,8 @@ module Pindo
|
|
|
313
316
|
'web',
|
|
314
317
|
project_path: config[:project_path],
|
|
315
318
|
export_path: web_export_path,
|
|
316
|
-
context: unity_context
|
|
319
|
+
context: unity_context,
|
|
320
|
+
auto_kill: @args_kill_unity
|
|
317
321
|
)
|
|
318
322
|
unity_export_task.dependencies << last_task.id if last_task
|
|
319
323
|
tasks << unity_export_task
|
data/lib/pindo/version.rb
CHANGED