fix(homebrew): 修复 Homebrew 伪终端输入和输出处理问题
- 在 colorize_line 函数中处理光标控制序列,避免它们破坏版本着色 - 添加 run_brew_in_pseudoterminal 函数,从控制终端读取输入而不是关闭的管道 - 将主脚本通过 curl 管道启动时的输入重定向到 /dev/tty - 修复启动器中 sudo 密码读取时的输入源问题 - 更新文档说明启动器如何处理 curl 管道输入和确认提示
This commit is contained in:
+1
-1
@@ -198,7 +198,7 @@ BREWUP_CONNECT_TIMEOUT_SECONDS=20 BREWUP_LOW_SPEED_TIME_SECONDS=45 brewup
|
||||
|
||||
为了兼顾性能,Formula 和 Cask 的批量阶段都只执行一次,只有仍然过期的失败项进入单项重试。单项升级保持串行,因为并行运行多个 Homebrew 写操作会争用 Homebrew 锁和 `/Applications`。用于错误分类的临时日志会在命令结束或收到信号后删除。
|
||||
|
||||
在交互式终端中,主脚本会通过 macOS 自带的 `script(1)` 为 Homebrew 创建伪终端,以便 Homebrew 6 实时重绘并行下载进度。后续的流式着色器会立即透传进度条的回车刷新,并只对完整文本行应用包名、版本和状态配色。需要记录错误以供重试判断时,`script(1)` 也会同步保存日志。如果将 `brewup` 输出重定向到文件或 CI,则自动切换为稳定的逐行输出,不绘制动态进度条。
|
||||
在交互式终端中,主脚本会通过 macOS 自带的 script(1) 为 Homebrew 创建伪终端,以便 Homebrew 6 实时重绘并行下载进度。后续的流式着色器会立即透传进度条的回车刷新,并只对完整文本行应用包名、版本和状态配色。启动器还会将主脚本的输入从 curl 管道切换到控制终端,保证 Homebrew 的 y/n 确认提示可正常读取输入,也避免伪终端收到 ^D。需要记录错误以供重试判断时,script(1) 也会同步保存日志。如果将 brewup 输出重定向到文件或 CI,则自动切换为稳定的逐行输出,不绘制动态进度条。
|
||||
|
||||
## Cask 与清理策略
|
||||
|
||||
|
||||
Reference in New Issue
Block a user