pindo 5.5.4 → 5.5.5
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/githelper.rb +22 -6
- data/lib/pindo/command/dev/tag.rb +3 -1
- data/lib/pindo/command/unity/upload.rb +98 -0
- data/lib/pindo/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c3c6d7ad7866c8d8f92e5a817db829bf51daf67408a0876b83687b25826c1fcb
|
4
|
+
data.tar.gz: 974a6c7c9be87170be834820ead3344e2c59ead93c63d832401ed80412f6353d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 416e9a546f37f30a966db52da1b4922f75ece53e67b52f33085d3723d543f82abdedeffe025d637fc455d9766e387c0f10d6fd5a9a83e4077c9aff794b235710
|
7
|
+
data.tar.gz: ac874183dbc82659b9bf653d28e8456edffc8fa61cb42d4abfd9c98a84f516ad3fe5dc7f5130b68dc36734210ac5fbf90d27f35634214e981964221203edfb78
|
data/lib/pindo/base/githelper.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'fileutils'
|
2
2
|
require 'pindo/base/executable'
|
3
3
|
require 'etc'
|
4
|
+
require 'claide'
|
4
5
|
|
5
6
|
module Pindo
|
6
7
|
module Githelper
|
@@ -487,12 +488,27 @@ module Pindo
|
|
487
488
|
private
|
488
489
|
|
489
490
|
def display_file_status(branch, files)
|
490
|
-
puts "
|
491
|
-
puts "
|
491
|
+
puts "═" * 60
|
492
|
+
puts "⚠️ 警告:检测到未提交的文件".red
|
493
|
+
puts "═" * 60
|
492
494
|
puts
|
493
|
-
puts "
|
495
|
+
puts "当前所在分支: #{branch}".red
|
496
|
+
puts "以下文件尚未提交到 Git:".red
|
494
497
|
puts
|
495
|
-
|
498
|
+
|
499
|
+
# 将文件列表分行并用红色显示
|
500
|
+
if files.is_a?(String)
|
501
|
+
files.split("\n").each do |file|
|
502
|
+
puts " • #{file}".red unless file.empty?
|
503
|
+
end
|
504
|
+
else
|
505
|
+
files.each do |file|
|
506
|
+
puts " • #{file}".red unless file.empty?
|
507
|
+
end
|
508
|
+
end
|
509
|
+
|
510
|
+
puts
|
511
|
+
puts "═" * 60
|
496
512
|
end
|
497
513
|
|
498
514
|
def process_user_choice(project_dir, branch)
|
@@ -501,8 +517,8 @@ module Pindo
|
|
501
517
|
menu_choice = "None"
|
502
518
|
|
503
519
|
cli.choose do |menu|
|
504
|
-
menu.header = "对以上未提交的文件, 有下列处理方式"
|
505
|
-
menu.prompt = "请选择如何处理(1/2/3...):"
|
520
|
+
menu.header = "对以上未提交的文件, 有下列处理方式".red
|
521
|
+
menu.prompt = "请选择如何处理(1/2/3...):".yellow
|
506
522
|
process_types.each do |item|
|
507
523
|
menu.choice(item) { |choice| menu_choice = choice }
|
508
524
|
end
|
@@ -11,7 +11,7 @@ module Pindo
|
|
11
11
|
# 命令的详细说明,包含用法示例
|
12
12
|
self.description = <<-DESC
|
13
13
|
发布代码,添加tag,添加发布信息,并合并到发布分支。
|
14
|
-
|
14
|
+
|
15
15
|
支持功能:
|
16
16
|
|
17
17
|
* 处理未提交的文件
|
@@ -28,6 +28,8 @@ module Pindo
|
|
28
28
|
|
29
29
|
$ pindo dev tag --mode=patch # 使用patch模式创建tag
|
30
30
|
|
31
|
+
$ pindo dev tag --tag=1.1.3 # 直接指定版本号创建tag(会自动添加v前缀)
|
32
|
+
|
31
33
|
$ pindo dev tag --retag # 强制重新打tag
|
32
34
|
DESC
|
33
35
|
|
@@ -2,12 +2,16 @@ require 'highline/import'
|
|
2
2
|
require 'fileutils'
|
3
3
|
require 'json'
|
4
4
|
require 'jpsclient'
|
5
|
+
require 'claide'
|
5
6
|
require 'pindo/module/unity/nugethelper'
|
6
7
|
|
7
8
|
module Pindo
|
8
9
|
class Command
|
9
10
|
class Unity < Command
|
10
11
|
class Upload < Unity
|
12
|
+
include Pindo::Githelper
|
13
|
+
extend Pindo::Executable
|
14
|
+
executable :git
|
11
15
|
|
12
16
|
self.summary = '上传 NuGet 包到 JPS'
|
13
17
|
|
@@ -229,6 +233,12 @@ module Pindo
|
|
229
233
|
def create_git_tag_from_nuspec(package_dir)
|
230
234
|
puts "🏷️ 创建 Git Tag..."
|
231
235
|
|
236
|
+
# 检查并更新 .gitignore 文件
|
237
|
+
ensure_build_directory_ignored(package_dir)
|
238
|
+
|
239
|
+
# 检查是否有未提交的文件
|
240
|
+
check_uncommitted_files(package_dir)
|
241
|
+
|
232
242
|
# 获取 .nuspec 文件并解析版本
|
233
243
|
nuspec_file = Pindo::Unity::NugetHelper.find_nuspec_file(package_dir)
|
234
244
|
unless nuspec_file
|
@@ -257,6 +267,94 @@ module Pindo
|
|
257
267
|
end
|
258
268
|
end
|
259
269
|
|
270
|
+
def check_uncommitted_files(package_dir)
|
271
|
+
# 获取未跟踪和已修改的文件
|
272
|
+
untracked_files = git!(%W(-C #{package_dir} ls-files --others --exclude-standard)).strip
|
273
|
+
modified_files = git!(%W(-C #{package_dir} diff --name-only)).strip
|
274
|
+
staged_files = git!(%W(-C #{package_dir} diff --cached --name-only)).strip
|
275
|
+
|
276
|
+
all_uncommitted = []
|
277
|
+
all_uncommitted += untracked_files.split("\n").reject(&:empty?) if !untracked_files.empty?
|
278
|
+
all_uncommitted += modified_files.split("\n").reject(&:empty?) if !modified_files.empty?
|
279
|
+
all_uncommitted += staged_files.split("\n").reject(&:empty?) if !staged_files.empty?
|
280
|
+
|
281
|
+
# 过滤掉 build 相关目录
|
282
|
+
all_uncommitted = all_uncommitted.reject do |file|
|
283
|
+
file.start_with?('build/') || file.start_with?('Build/') ||
|
284
|
+
file.start_with?('/build/') || file.start_with?('/Build/')
|
285
|
+
end
|
286
|
+
|
287
|
+
if all_uncommitted.any?
|
288
|
+
puts
|
289
|
+
puts "═" * 60
|
290
|
+
puts "⚠️ 警告:检测到未提交的文件".red
|
291
|
+
puts "═" * 60
|
292
|
+
puts
|
293
|
+
puts "以下文件尚未提交到 Git:".red
|
294
|
+
puts
|
295
|
+
all_uncommitted.each do |file|
|
296
|
+
puts " • #{file}".red
|
297
|
+
end
|
298
|
+
puts
|
299
|
+
puts "═" * 60
|
300
|
+
puts "建议先提交这些文件,或将它们添加到 .gitignore 中".red
|
301
|
+
puts "═" * 60
|
302
|
+
puts
|
303
|
+
end
|
304
|
+
end
|
305
|
+
|
306
|
+
def ensure_build_directory_ignored(package_dir)
|
307
|
+
gitignore_path = File.join(package_dir, '.gitignore')
|
308
|
+
|
309
|
+
# 要忽略的目录
|
310
|
+
build_patterns = [
|
311
|
+
'build/',
|
312
|
+
'/build/',
|
313
|
+
'Build/',
|
314
|
+
'/Build/'
|
315
|
+
]
|
316
|
+
|
317
|
+
# 读取现有的 .gitignore 内容
|
318
|
+
existing_patterns = []
|
319
|
+
if File.exist?(gitignore_path)
|
320
|
+
existing_patterns = File.readlines(gitignore_path).map(&:strip).reject(&:empty?)
|
321
|
+
end
|
322
|
+
|
323
|
+
# 检查是否已经包含 build 目录的忽略规则
|
324
|
+
has_build_ignore = existing_patterns.any? do |pattern|
|
325
|
+
pattern = pattern.strip
|
326
|
+
# 检查是否匹配 build 目录的各种形式
|
327
|
+
build_patterns.any? { |bp| pattern == bp || pattern == bp.chomp('/') }
|
328
|
+
end
|
329
|
+
|
330
|
+
# 如果没有包含 build 目录,则添加
|
331
|
+
unless has_build_ignore
|
332
|
+
puts "📝 更新 .gitignore 文件,添加 build/ 目录..."
|
333
|
+
|
334
|
+
# 追加 build 目录到 .gitignore
|
335
|
+
File.open(gitignore_path, 'a') do |file|
|
336
|
+
# 如果文件不为空且最后没有换行,添加换行
|
337
|
+
file.puts if existing_patterns.any? && !File.read(gitignore_path).end_with?("\n")
|
338
|
+
file.puts "# Unity build output"
|
339
|
+
file.puts "build/"
|
340
|
+
file.puts "Build/"
|
341
|
+
end
|
342
|
+
|
343
|
+
puts "✅ 已将 build 目录添加到 .gitignore"
|
344
|
+
|
345
|
+
# 提交 .gitignore 的更改
|
346
|
+
begin
|
347
|
+
git!(%W(-C #{package_dir} add .gitignore))
|
348
|
+
git!(%W(-C #{package_dir} commit -m "chore: 添加 build 目录到 .gitignore"))
|
349
|
+
puts "✅ 已提交 .gitignore 更改"
|
350
|
+
rescue => e
|
351
|
+
puts "⚠️ 提交 .gitignore 失败: #{e.message}"
|
352
|
+
end
|
353
|
+
else
|
354
|
+
puts "✅ .gitignore 已包含 build 目录规则"
|
355
|
+
end
|
356
|
+
end
|
357
|
+
|
260
358
|
end
|
261
359
|
end
|
262
360
|
end
|
data/lib/pindo/version.rb
CHANGED
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.5.
|
4
|
+
version: 5.5.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- wade
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-09-
|
10
|
+
date: 2025-09-29 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: claide
|