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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b9b78c1d33a386cb6ca94c86474093c790548e29964bc4a20eeb74e987ed8a66
4
- data.tar.gz: 603656976a10b41c86d8f6c3a125601b8120cf9b0c064b3bbd66b1cc22dc0f4f
3
+ metadata.gz: c3c6d7ad7866c8d8f92e5a817db829bf51daf67408a0876b83687b25826c1fcb
4
+ data.tar.gz: 974a6c7c9be87170be834820ead3344e2c59ead93c63d832401ed80412f6353d
5
5
  SHA512:
6
- metadata.gz: 7adaf27919be676327ad4942df3212bf67c18b5c3f550bb8ac70c15bd4d5b3167b0fc5372b5008edf74326af9a768227329634c6b427ece338cb0cc04d12ba69
7
- data.tar.gz: 4b2256dd2a74d7bf251507a0a0335ca8528021f5471dbe27dd5afcb9c21c7b1c504724d633083b753c3c57a70b4cfcf6d968b84e7efb52989f9a9534ee8d66f4
6
+ metadata.gz: 416e9a546f37f30a966db52da1b4922f75ece53e67b52f33085d3723d543f82abdedeffe025d637fc455d9766e387c0f10d6fd5a9a83e4077c9aff794b235710
7
+ data.tar.gz: ac874183dbc82659b9bf653d28e8456edffc8fa61cb42d4abfd9c98a84f516ad3fe5dc7f5130b68dc36734210ac5fbf90d27f35634214e981964221203edfb78
@@ -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 "\n当前所在分支:#{branch}有下面这些文件没有提交:"
491
+ puts "" * 60
492
+ puts "⚠️ 警告:检测到未提交的文件".red
493
+ puts "═" * 60
492
494
  puts
493
- puts "\n#{files}\n"
495
+ puts "当前所在分支: #{branch}".red
496
+ puts "以下文件尚未提交到 Git:".red
494
497
  puts
495
- puts "========================================"
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
@@ -6,7 +6,7 @@ require 'time'
6
6
 
7
7
  module Pindo
8
8
 
9
- VERSION = "5.5.4"
9
+ VERSION = "5.5.5"
10
10
 
11
11
  class VersionCheck
12
12
  RUBYGEMS_API = 'https://rubygems.org/api/v1/gems/pindo.json'
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
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-28 00:00:00.000000000 Z
10
+ date: 2025-09-29 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: claide