pindo 5.2.4 → 5.3.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.
Files changed (36) hide show
  1. checksums.yaml +4 -4
  2. data/lib/pindo/base/aeshelper.rb +23 -2
  3. data/lib/pindo/base/pindocontext.rb +259 -0
  4. data/lib/pindo/client/pgyer_feishu_oauth_cli.rb +343 -80
  5. data/lib/pindo/client/pgyerclient.rb +30 -20
  6. data/lib/pindo/command/android/autobuild.rb +52 -22
  7. data/lib/pindo/command/android/build.rb +27 -16
  8. data/lib/pindo/command/android/debug.rb +25 -15
  9. data/lib/pindo/command/dev/debug.rb +2 -51
  10. data/lib/pindo/command/dev/feishu.rb +19 -2
  11. data/lib/pindo/command/ios/adhoc.rb +2 -1
  12. data/lib/pindo/command/ios/autobuild.rb +35 -8
  13. data/lib/pindo/command/ios/debug.rb +2 -132
  14. data/lib/pindo/command/lib/lint.rb +24 -1
  15. data/lib/pindo/command/setup.rb +24 -4
  16. data/lib/pindo/command/unity/apk.rb +15 -0
  17. data/lib/pindo/command/unity/ipa.rb +16 -0
  18. data/lib/pindo/command.rb +13 -2
  19. data/lib/pindo/module/android/android_build_config_helper.rb +425 -0
  20. data/lib/pindo/module/android/apk_helper.rb +23 -25
  21. data/lib/pindo/module/android/base_helper.rb +572 -0
  22. data/lib/pindo/module/android/build_helper.rb +8 -318
  23. data/lib/pindo/module/android/gp_compliance_helper.rb +668 -0
  24. data/lib/pindo/module/android/gradle_helper.rb +746 -3
  25. data/lib/pindo/module/appselect.rb +18 -5
  26. data/lib/pindo/module/build/buildhelper.rb +120 -29
  27. data/lib/pindo/module/build/unityhelper.rb +675 -18
  28. data/lib/pindo/module/build/versionhelper.rb +146 -0
  29. data/lib/pindo/module/cert/certhelper.rb +33 -2
  30. data/lib/pindo/module/cert/xcodecerthelper.rb +3 -1
  31. data/lib/pindo/module/pgyer/pgyerhelper.rb +114 -31
  32. data/lib/pindo/module/xcode/xcodebuildconfig.rb +232 -0
  33. data/lib/pindo/module/xcode/xcodebuildhelper.rb +0 -1
  34. data/lib/pindo/version.rb +356 -86
  35. data/lib/pindo.rb +72 -3
  36. metadata +5 -1
@@ -1,7 +1,6 @@
1
1
  require 'fileutils'
2
2
  require 'xcodeproj'
3
3
  require 'json'
4
- require 'pindo/module/xcode/xcodebuildconfig'
5
4
  require 'pindo/module/cert/xcodecerthelper'
6
5
 
7
6
  module Pindo
data/lib/pindo/version.rb CHANGED
@@ -1,111 +1,381 @@
1
+ require 'net/http'
2
+ require 'json'
3
+ require 'yaml'
4
+ require 'fileutils'
5
+ require 'time'
6
+
1
7
  module Pindo
2
8
 
3
- VERSION = "5.2.4"
9
+ VERSION = "5.3.7"
10
+
11
+ class VersionCheck
12
+ RUBYGEMS_API = 'https://rubygems.org/api/v1/gems/pindo.json'
13
+ VERSION_INFO_FILE = File.expand_path('~/.pindo/version_info.yml')
14
+ CHECK_INTERVAL = 5 * 60 * 60 # 5小时检查一次
15
+
16
+ class << self
17
+ # 主版本检查方法(保持向后兼容)
18
+ def check_pindo_new_version
19
+ begin
20
+ return if ENV['PINDO_NO_UPDATE_CHECK'] # 允许用户禁用
21
+
22
+ puts " 🔄 执行版本检查...".green if ENV['PINDO_DEBUG']
23
+
24
+ # 检查是否应该执行版本检查
25
+ return unless should_check?
26
+
27
+ # 优先尝试从 RubyGems API 获取版本
28
+ latest_version = fetch_latest_version_from_api
29
+
30
+ if latest_version
31
+ puts " ✅ 从 RubyGems 获取最新版本: #{latest_version}".green if ENV['PINDO_DEBUG']
32
+ check_and_notify_with_version(latest_version)
33
+ else
34
+ puts " ⚠️ RubyGems API 请求失败,使用配置文件检查".yellow if ENV['PINDO_DEBUG']
35
+ # 回退到配置文件检查
36
+ check_from_config_file
37
+ end
38
+
39
+ rescue => e
40
+ puts " ❌ 版本检查出错: #{e.message}".red if ENV['PINDO_DEBUG']
41
+ puts e.backtrace.join("\n") if ENV['PINDO_DEBUG']
42
+ # 静默失败,不影响主程序
43
+ end
44
+ end
45
+
46
+ # 强制更新检查
47
+ def check_force_update!
48
+ return if ENV['PINDO_SKIP_FORCE_UPDATE'] # 紧急跳过选项
49
+
50
+ puts " 📌 执行强制更新检查...".green if ENV['PINDO_DEBUG']
51
+
52
+ begin
53
+ # 检查缓存中是否有强制更新标记
54
+ if require_force_update_from_cache?
55
+ cache = load_cache
56
+ show_force_update_message(cache['latest_version'], Pindo::VERSION)
57
+ exit(1)
58
+ end
59
+
60
+ # 如果缓存过期,立即检查
61
+ if should_check_immediately?
62
+ puts " 🌐 正在从 RubyGems 获取最新版本...".green if ENV['PINDO_DEBUG']
63
+ latest = fetch_latest_version_from_api
64
+
65
+ if latest && needs_major_or_minor_update?(latest, Pindo::VERSION)
66
+ # 更新缓存并退出
67
+ save_force_update_cache(latest)
68
+ show_force_update_message(latest, Pindo::VERSION)
69
+ exit(1)
70
+ end
71
+ end
72
+
73
+ # 检查配置文件中的强制更新(兼容原有逻辑)
74
+ check_pindo_force_upgrade
75
+
76
+ rescue SystemExit
77
+ raise # 重新抛出 exit
78
+ rescue => e
79
+ puts " ⚠️ 强制更新检查失败: #{e.message}".yellow if ENV['PINDO_DEBUG']
80
+ end
81
+ end
82
+
83
+ # 原有的强制升级检查(从配置文件)
84
+ def check_pindo_force_upgrade
85
+ begin
86
+ pindo_dir = File.expand_path(ENV['PINDO_DIR'] || '~/.pindo')
87
+ pindo_common_configdir = File.join(pindo_dir, "pindo_common_config")
88
+ pindo_common_configfile_fullname = File.join(pindo_common_configdir, "pindo_config.json")
89
+
90
+ return unless File.exist?(pindo_common_configfile_fullname)
91
+
92
+ pindo_common_config_json = JSON.parse(File.read(pindo_common_configfile_fullname))
93
+
94
+ pindo_latest_version = pindo_common_config_json["pindo_latest_version"]
95
+ pindo_mini_version = pindo_common_config_json["pindo_mini_version"]
96
+ pindo_force_upgrade = pindo_common_config_json["pindo_force_upgrade"]
97
+ pindo_current_version = Pindo::VERSION
98
+
99
+ if pindo_force_upgrade
100
+ compare_num = version_greater_than(version_string1:pindo_current_version, version_string2:pindo_mini_version)
101
+ if compare_num < 0
102
+ puts "当前pindo版本 #{Pindo::VERSION}"
103
+ puts "最新版本 #{pindo_latest_version}"
104
+ puts "要求最低版本 #{pindo_mini_version}"
105
+ raise Informative, "请使用 gem install pindo 升级!"
106
+ end
107
+ end
108
+
109
+ rescue JSON::ParserError, Errno::ENOENT => e
110
+ # 配置文件不存在或解析失败,忽略
111
+ rescue Informative
112
+ raise # 重新抛出 Informative 错误
113
+ rescue => e
114
+ raise Informative, "有异常错误,请确认是否执行pindo setup 拉取最新配置, 更新配置任然有错误请执行gem install pindo 更新"
115
+ end
116
+ end
117
+
118
+ # 版本比较方法(保持原有实现)
119
+ def version_greater_than(version_string1: nil, version_string2: nil)
120
+ return 0 if version_string1.nil? && version_string2.nil?
121
+ return -1 if version_string1.nil?
122
+ return 1 if version_string2.nil?
123
+
124
+ version_string1_array = version_string1.split('.') || []
125
+ version_string2_array = version_string2.split('.') || []
126
+
127
+ array_max_length = [version_string1_array.size, version_string2_array.size].max
128
+
129
+ version_string1_array += ['0'] * (array_max_length - version_string1_array.size)
130
+ version_string2_array += ['0'] * (array_max_length - version_string2_array.size)
131
+
132
+ compare_num = 0
133
+ (0..array_max_length).each do |i|
134
+ if version_string1_array[i] == version_string2_array[i]
135
+ compare_num = 0
136
+ elsif version_string1_array[i].to_i > version_string2_array[i].to_i
137
+ compare_num = 1
138
+ break
139
+ else
140
+ compare_num = -1
141
+ break
142
+ end
143
+ end
144
+
145
+ compare_num
146
+ end
147
+
148
+ private
149
+
150
+ # 从 RubyGems API 获取最新版本
151
+ def fetch_latest_version_from_api
152
+ uri = URI(RUBYGEMS_API)
153
+
154
+ # 创建 HTTP 连接,禁用代理
155
+ http = Net::HTTP.new(uri.host, uri.port, nil, nil)
156
+ http.use_ssl = true
157
+ http.open_timeout = 3 # 3秒超时
158
+ http.read_timeout = 3
159
+
160
+ puts " 🌐 直连 RubyGems API (跳过代理)...".green if ENV['PINDO_DEBUG']
161
+
162
+ request = Net::HTTP::Get.new(uri)
163
+ response = http.request(request)
164
+
165
+ if response.code == '200'
166
+ data = JSON.parse(response.body)
167
+ version = data['version']
168
+ puts " ✅ 获取到最新版本: #{version}".green if ENV['PINDO_DEBUG']
169
+ version
170
+ else
171
+ puts " ❌ API 响应错误: #{response.code}".yellow if ENV['PINDO_DEBUG']
172
+ nil
173
+ end
174
+ rescue => e
175
+ puts " ⚠️ 版本获取失败: #{e.message}".yellow if ENV['PINDO_DEBUG']
176
+ nil
177
+ end
178
+
179
+ # 从配置文件检查版本(原有逻辑)
180
+ def check_from_config_file
181
+ begin
182
+ pindo_dir = File.expand_path(ENV['PINDO_DIR'] || '~/.pindo')
183
+ pindo_common_configdir = File.join(pindo_dir, "pindo_common_config")
184
+ pindo_common_configfile_fullname = File.join(pindo_common_configdir, "pindo_config.json")
185
+
186
+ return unless File.exist?(pindo_common_configfile_fullname)
187
+
188
+ pindo_common_config_json = JSON.parse(File.read(pindo_common_configfile_fullname))
189
+
190
+ pindo_latest_version = pindo_common_config_json["pindo_latest_version"]
191
+ pindo_mini_version = pindo_common_config_json["pindo_mini_version"]
192
+ pindo_force_upgrade = pindo_common_config_json["pindo_force_upgrade"]
193
+ pindo_lates_update_info = pindo_common_config_json["pindo_lates_update_info"]
194
+
195
+ pindo_current_version = Pindo::VERSION
196
+
197
+ if pindo_force_upgrade
198
+ compare_num = version_greater_than(version_string1:pindo_current_version, version_string2:pindo_latest_version)
199
+ if compare_num < 0
200
+ puts
201
+ puts "最新版本是#{pindo_latest_version}目前可用, 可使用 gem install pindo 升级"
202
+ puts
203
+ puts pindo_lates_update_info if pindo_lates_update_info
204
+ puts
205
+ end
206
+ end
207
+
208
+ rescue => e
209
+ puts "有异常错误,请确认是否执行pindo setup 拉取最新配置, 更新配置任然有错误请执行gem install pindo 更新"
210
+ puts
211
+ end
212
+ end
213
+
214
+ # 检查并通知版本更新
215
+ def check_and_notify_with_version(latest_version)
216
+ return unless latest_version
217
+
218
+ current_version = Pindo::VERSION
219
+
220
+ # 检查是否有新版本
221
+ if newer_version?(latest_version, current_version)
222
+ # 更新缓存
223
+ save_update_cache(latest_version, true)
224
+
225
+ # 显示更新提示
226
+ show_update_banner(latest_version, current_version)
227
+ else
228
+ # 更新缓存(无新版本)
229
+ save_update_cache(latest_version, false)
230
+ puts " ✓ 已是最新版本 (#{current_version})".green if ENV['PINDO_DEBUG']
231
+ end
232
+ end
233
+
234
+ # 判断是否应该检查版本
235
+ def should_check?
236
+ # 检查缓存文件
237
+ if File.exist?(VERSION_INFO_FILE)
238
+ cache = load_cache
239
+ last_check = cache['last_check_at']
240
+ if last_check
241
+ time_since_check = Time.now - Time.parse(last_check)
242
+ return time_since_check > CHECK_INTERVAL
243
+ end
244
+ end
245
+
246
+ true
247
+ end
4
248
 
249
+ # 是否应该立即检查(用于强制更新)
250
+ def should_check_immediately?
251
+ return true unless File.exist?(VERSION_INFO_FILE)
5
252
 
6
- class VersionCheck
7
-
8
- def self.check_pindo_new_version
253
+ cache = load_cache
254
+ last_check = cache['last_check_at']
9
255
 
10
- # puts
11
- # puts "pindo #{Pindo::VERSION}"
12
- begin
256
+ return true unless last_check
13
257
 
14
- pindo_dir = File.expand_path(ENV['PINDO_DIR'] || '~/.pindo')
15
- pindo_common_configdir = File.join(pindo_dir, "pindo_common_config")
16
- pindo_common_configfile_fullname = File.join(pindo_common_configdir, "pindo_config.json")
17
- pindo_common_config_json = JSON.parse(File.read(pindo_common_configfile_fullname))
258
+ time_since_check = Time.now - Time.parse(last_check)
259
+ time_since_check > CHECK_INTERVAL
260
+ end
18
261
 
19
- pindo_latest_version = pindo_common_config_json["pindo_latest_version"]
20
- pindo_mini_version = pindo_common_config_json["pindo_mini_version"]
21
- pindo_force_upgrade = pindo_common_config_json["pindo_force_upgrade"]
22
- pindo_lates_update_info = pindo_common_config_json["pindo_lates_update_info"]
262
+ # 检查缓存中是否需要强制更新
263
+ def require_force_update_from_cache?
264
+ return false unless File.exist?(VERSION_INFO_FILE)
23
265
 
24
- pindo_current_version = Pindo::VERSION
266
+ cache = load_cache
267
+ latest = cache['latest_version']
268
+ current = Pindo::VERSION
25
269
 
26
- if pindo_force_upgrade
27
- compare_num = Pindo::VersionCheck::version_greater_than(version_string1:pindo_current_version, version_string2:pindo_latest_version)
28
- if compare_num < 0
29
- # answer = agree("有可用的新版本,是否升级?(Y/n:")
30
- # if answer
31
- # Pindo::Command::Env::Upgrade::run([])
32
- # end
33
- puts
34
- puts "最新版本是#{pindo_latest_version}目前可用, 可使用 gem install pindo 升级"
35
- puts
36
- puts pindo_lates_update_info
37
- puts
38
- end
270
+ return false unless latest
39
271
 
40
- end
272
+ needs_major_or_minor_update?(latest, current)
273
+ end
41
274
 
42
- rescue Exception => e
43
- puts "有异常错误,请确认是否执行pindo setup 拉取最新配置, 更新配置任然有错误请执行gem install pindo 更新"
44
- puts
275
+ # 判断是否是新版本
276
+ def newer_version?(latest, current)
277
+ return false unless latest && current
45
278
 
279
+ compare_result = version_greater_than(version_string1: current, version_string2: latest)
280
+ compare_result < 0
281
+ end
46
282
 
47
- end
48
- end
283
+ # 检查是否需要强制更新(主版本或次版本)
284
+ def needs_major_or_minor_update?(latest, current)
285
+ return false unless latest && current
49
286
 
50
- def self.check_pindo_force_upgrade
287
+ latest_parts = latest.split('.').map(&:to_i)
288
+ current_parts = current.split('.').map(&:to_i)
51
289
 
52
- begin
290
+ # 主版本更新
291
+ return true if latest_parts[0] > current_parts[0]
53
292
 
54
- pindo_dir = File.expand_path(ENV['PINDO_DIR'] || '~/.pindo')
55
- pindo_common_configdir = File.join(pindo_dir, "pindo_common_config")
56
- pindo_common_configfile_fullname = File.join(pindo_common_configdir, "pindo_config.json")
57
- pindo_common_config_json = JSON.parse(File.read(pindo_common_configfile_fullname))
293
+ # 次版本更新
294
+ return true if latest_parts[0] == current_parts[0] && latest_parts[1] > current_parts[1]
58
295
 
59
- pindo_latest_version = pindo_common_config_json["pindo_latest_version"]
60
- pindo_mini_version = pindo_common_config_json["pindo_mini_version"]
61
- pindo_force_upgrade = pindo_common_config_json["pindo_force_upgrade"]
62
- pindo_current_version = Pindo::VERSION
296
+ false
297
+ end
63
298
 
64
- if pindo_force_upgrade
65
- compare_num = Pindo::VersionCheck::version_greater_than(version_string1:pindo_current_version, version_string2:pindo_mini_version)
66
- if compare_num < 0
67
- puts "当前pindo版本 #{Pindo::VERSION}"
68
- puts "最新版本 #{pindo_latest_version}"
69
- puts "要求最低版本 #{pindo_mini_version}"
70
- raise Informative, "请使用 gem install pindo 升级!"
71
- end
72
- end
299
+ # 加载缓存
300
+ def load_cache
301
+ YAML.load_file(VERSION_INFO_FILE) rescue {}
302
+ end
73
303
 
74
- rescue Exception => e
75
- raise Informative, "有异常错误,请确认是否执行pindo setup 拉取最新配置, 更新配置任然有错误请执行gem install pindo 更新"
76
- end
77
- end
304
+ # 保存更新缓存
305
+ def save_update_cache(latest_version, has_update)
306
+ cache = {
307
+ 'last_check_at' => Time.now.to_s,
308
+ 'latest_version' => latest_version,
309
+ 'new_version_available' => has_update,
310
+ 'last_shown_at' => has_update ? Time.now.to_s : nil
311
+ }
312
+ save_cache(cache)
313
+ end
78
314
 
79
- def self.version_greater_than(version_string1: nil, version_string2: nil)
80
- return 0 if version_string1.nil? && version_string2.nil?
81
- return -1 if version_string1.nil?
82
- return 1 if version_string2.nil?
315
+ # 保存强制更新缓存
316
+ def save_force_update_cache(latest_version)
317
+ cache = {
318
+ 'last_check_at' => Time.now.to_s,
319
+ 'latest_version' => latest_version,
320
+ 'new_version_available' => true,
321
+ 'force_update_required' => true
322
+ }
323
+ save_cache(cache)
324
+ end
83
325
 
84
- version_string1_array = version_string1.split('.') || []
85
- version_string2_array = version_string2.split('.') || []
326
+ # 写入缓存文件
327
+ def save_cache(data)
328
+ FileUtils.mkdir_p(File.dirname(VERSION_INFO_FILE))
329
+ File.write(VERSION_INFO_FILE, data.to_yaml)
330
+ rescue => e
331
+ puts " ⚠️ 缓存保存失败: #{e.message}".yellow if ENV['PINDO_DEBUG']
332
+ end
86
333
 
87
- array_max_length = [version_string1_array.size, version_string2_array.size].max
334
+ # 显示更新提示横幅
335
+ def show_update_banner(latest, current)
336
+ puts
337
+ puts "┌─────────────────────────────────────────────────────┐".yellow
338
+ puts "│ 🎉 新版本可用! │".yellow
339
+ puts "│ │".yellow
340
+ puts "│ 当前版本: #{current.ljust(39)}│".yellow
341
+ puts "│ 最新版本: #{latest.ljust(39)}│".yellow
342
+ puts "│ │".yellow
343
+ puts "│ 更新命令: gem install pindo │".yellow
344
+ puts "│ │".yellow
345
+ puts "│ 禁用检查: export PINDO_NO_UPDATE_CHECK=1 │".yellow
346
+ puts "└─────────────────────────────────────────────────────┘".yellow
347
+ puts
348
+ end
88
349
 
89
- version_string1_array += ['0'] * (array_max_length - version_string1_array.size)
90
- version_string2_array += ['0'] * (array_max_length - version_string2_array.size)
350
+ # 显示强制更新消息
351
+ def show_force_update_message(latest, current)
352
+ latest_parts = latest.split('.').map(&:to_i)
353
+ current_parts = current.split('.').map(&:to_i)
91
354
 
92
- compare_num = 0
93
- (0..array_max_length).each do |i|
94
- if version_string1_array[i] == version_string2_array[i]
95
- compare_num = 0
96
- elsif version_string1_array[i].to_i > version_string2_array[i].to_i
97
- compare_num = 1
98
- break
99
- else
100
- compare_num = -1
101
- break
102
- end
103
- end
355
+ is_major_update = latest_parts[0] > current_parts[0]
356
+ update_type = is_major_update ? "主版本" : "次版本"
104
357
 
105
- compare_num
106
- end
107
-
108
- end
109
-
110
-
111
- end
358
+ puts "\n"
359
+ puts "╔═══════════════════════════════════════════════════════════╗".red
360
+ puts "║ ⚠️ 强制更新要求 ⚠️ ║".red
361
+ puts "╠═══════════════════════════════════════════════════════════╣".red
362
+ puts "║ ║".red
363
+ puts "║ 检测到#{update_type}更新,必须升级后才能继续使用: ║".red
364
+ puts "║ ║".red
365
+ puts "║ 当前版本: #{current.ljust(44)}║".red
366
+ puts "║ 最新版本: #{latest.ljust(44)}║".red
367
+ puts "║ ║".red
368
+ puts "║ 此更新包含重要变更,为确保功能正常,请立即更新: ║".red
369
+ puts "║ ║".red
370
+ puts "║ $ gem install pindo ║".red
371
+ puts "║ ║".red
372
+ puts "║ 如遇紧急情况需要临时跳过(不推荐): ║".red
373
+ puts "║ $ export PINDO_SKIP_FORCE_UPDATE=1 ║".red
374
+ puts "║ ║".red
375
+ puts "╚═══════════════════════════════════════════════════════════╝".red
376
+ puts "\n"
377
+ puts "程序将退出,请更新后重试。".red
378
+ end
379
+ end
380
+ end
381
+ end
data/lib/pindo.rb CHANGED
@@ -9,7 +9,7 @@ module Pindo
9
9
  autoload :Command, 'pindo/command'
10
10
  autoload :Executable, 'pindo/base/executable'
11
11
  autoload :Plistbuddyexecutable, 'pindo/base/plistbuddyexecutable'
12
-
12
+
13
13
  require 'pindo/command'
14
14
  require 'pindo/version'
15
15
 
@@ -17,10 +17,79 @@ module Pindo
17
17
  class PindoApp
18
18
 
19
19
  def run(argv)
20
+ begin
21
+ # 解析参数以确定是否是 help 或 version 命令
22
+ coerced_argv = CLAide::ARGV.coerce(argv)
23
+
24
+ # 显示欢迎界面(除了 help/version 命令和特定情况)
25
+ show_welcome_banner(argv, coerced_argv)
26
+
27
+ # 跳过 help/version 命令的版本检查
28
+ unless coerced_argv.flag?('help') || coerced_argv.flag?('version')
29
+ # 执行版本检查
30
+ begin
31
+ # 1. 强制更新检查(可能会退出程序)
32
+ Pindo::VersionCheck.check_force_update!
33
+
34
+ # 2. 常规版本检查
35
+ Pindo::VersionCheck.check_pindo_new_version
36
+ rescue => e
37
+ puts "⚠️ 版本检查出错: #{e.message}".yellow if ENV['PINDO_DEBUG']
38
+ # 版本检查失败不影响正常命令执行
39
+ end
40
+ end
41
+
42
+ rescue => e
43
+ # 参数解析失败,继续执行原有逻辑
44
+ puts "⚠️ 参数解析失败: #{e.message}".yellow if ENV['PINDO_DEBUG']
45
+ end
46
+
47
+ # 运行命令
48
+ Pindo::Command.run(argv)
49
+ end
50
+
51
+ private
52
+
53
+ # 显示欢迎横幅
54
+ def show_welcome_banner(argv, coerced_argv)
55
+ require 'colored2'
56
+
57
+ # 不显示横幅的情况
58
+ return if ENV['PINDO_NO_BANNER'] == '1' # 环境变量禁用
59
+ return if coerced_argv.flag?('help') # help 命令
60
+ return if coerced_argv.flag?('version') # version 命令
61
+ return if argv.empty? # 无参数时(会显示帮助)
62
+
63
+ # 某些命令不显示横幅(可根据需要调整)
64
+ first_arg = argv.first.to_s.downcase
65
+ return if ['setup', 'env'].include?(first_arg)
66
+
67
+ # 显示欢迎界面
68
+ box_width = 62
69
+ title = "Pindo v#{Pindo::VERSION}"
70
+ subtitle = "Welcome to pindo, pindo make it easy!"
71
+
72
+ puts
73
+ puts "╔#{'═' * box_width}╗".cyan
74
+ puts "║#{title.center(box_width).green}║".cyan
75
+ puts "║#{' ' * box_width}║".cyan
76
+ puts "║#{subtitle.center(box_width).italic}║".cyan
77
+ puts "╚#{'═' * box_width}╝".cyan
78
+ puts
79
+ end
80
+
81
+ # 显示简单横幅(旧版本,保留备用)
82
+ def show_simple_banner
83
+ require 'colored2'
20
84
 
21
- Pindo::VersionCheck::check_pindo_new_version()
22
- Pindo::Command.run(argv)
85
+ title = "Pindo v#{Pindo::VERSION}"
86
+ box_width = 60
23
87
 
88
+ puts
89
+ puts "╔#{'═' * box_width}╗".cyan
90
+ puts "║#{title.center(box_width).green}║".cyan
91
+ puts "╚#{'═' * box_width}╝".cyan
92
+ puts
24
93
  end
25
94
 
26
95
  end
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.2.4
4
+ version: 5.3.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - wade
@@ -279,6 +279,7 @@ files:
279
279
  - lib/pindo/base/funlog.rb
280
280
  - lib/pindo/base/githelper.rb
281
281
  - lib/pindo/base/hashhelper.rb
282
+ - lib/pindo/base/pindocontext.rb
282
283
  - lib/pindo/base/plaininformative.rb
283
284
  - lib/pindo/base/plistbuddyexecutable.rb
284
285
  - lib/pindo/base/standarderror.rb
@@ -398,9 +399,11 @@ files:
398
399
  - lib/pindo/command/web/run.rb
399
400
  - lib/pindo/config/pindoconfig.rb
400
401
  - lib/pindo/config/pindouserlocalconfig.rb
402
+ - lib/pindo/module/android/android_build_config_helper.rb
401
403
  - lib/pindo/module/android/apk_helper.rb
402
404
  - lib/pindo/module/android/base_helper.rb
403
405
  - lib/pindo/module/android/build_helper.rb
406
+ - lib/pindo/module/android/gp_compliance_helper.rb
404
407
  - lib/pindo/module/android/gradle_helper.rb
405
408
  - lib/pindo/module/android/so_helper.rb
406
409
  - lib/pindo/module/appselect.rb
@@ -412,6 +415,7 @@ files:
412
415
  - lib/pindo/module/build/commonconfuseproj.rb
413
416
  - lib/pindo/module/build/swarkhelper.rb
414
417
  - lib/pindo/module/build/unityhelper.rb
418
+ - lib/pindo/module/build/versionhelper.rb
415
419
  - lib/pindo/module/cert/certhelper.rb
416
420
  - lib/pindo/module/cert/keychainhelper.rb
417
421
  - lib/pindo/module/cert/pemhelper.rb