feat(homebrew): 添加 Homebrew 输出流式着色功能
- 实现 can_stream_colorize_tty_output 函数检测流式着色支持 - 添加 colorize_brew_tty_stream 函数处理实时进度条和语义配色 - 使用 Perl 脚本实现流式过滤器,即时处理 CRLF 和 CR 换行 - 优化 run_brew_colored 函数集成伪终端和流式着色 - 改进日志记录功能,保留错误分类和重试决策所需信息 - 修复进度条缓冲问题,确保实时显示升级状态
This commit is contained in:
+2
-1
@@ -31,6 +31,7 @@
|
||||
- Homebrew
|
||||
- Bash
|
||||
- `curl`
|
||||
- macOS 自带的 `/usr/bin/script` 和 `/usr/bin/perl`(用于兼顾实时进度与自定义配色)
|
||||
- macOS Keychain 工具 `/usr/bin/security`,仅启动器需要
|
||||
|
||||
可先检查:
|
||||
@@ -197,7 +198,7 @@ BREWUP_CONNECT_TIMEOUT_SECONDS=20 BREWUP_LOW_SPEED_TIME_SECONDS=45 brewup
|
||||
|
||||
为了兼顾性能,Formula 和 Cask 的批量阶段都只执行一次,只有仍然过期的失败项进入单项重试。单项升级保持串行,因为并行运行多个 Homebrew 写操作会争用 Homebrew 锁和 `/Applications`。用于错误分类的临时日志会在命令结束或收到信号后删除。
|
||||
|
||||
在交互式终端中,主脚本会让 Homebrew 直接连接 TTY,以便 Homebrew 6 实时重绘并行下载进度。需要记录错误以供重试判断时,macOS 自带的 `script(1)` 会创建伪终端并同步保存日志。如果将 `brewup` 输出重定向到文件或 CI,则自动切换为稳定的逐行输出,不绘制动态进度条。
|
||||
在交互式终端中,主脚本会通过 macOS 自带的 `script(1)` 为 Homebrew 创建伪终端,以便 Homebrew 6 实时重绘并行下载进度。后续的流式着色器会立即透传进度条的回车刷新,并只对完整文本行应用包名、版本和状态配色。需要记录错误以供重试判断时,`script(1)` 也会同步保存日志。如果将 `brewup` 输出重定向到文件或 CI,则自动切换为稳定的逐行输出,不绘制动态进度条。
|
||||
|
||||
## Cask 与清理策略
|
||||
|
||||
|
||||
Reference in New Issue
Block a user