Dart调用brew outdated仅获包名,如何获取版本信息?
解决Dart调用
brew outdated仅获取包名的问题 问题原因
brew outdated会根据输出环境自动调整格式:当输出到终端时显示完整版本对比信息,若输出被程序(比如Dart的Process)捕获,会默认切换为简洁模式,只输出包名列表。
解决方案
有两种可靠方式可以获取完整的版本对比数据:
1. 用--verbose参数强制输出详情
直接给brew outdated添加--verbose参数,强制让它输出包含版本对比的完整内容:
import 'dart:io'; void main() async { var processResult = await Process.run('brew', ['outdated', '--verbose']); print(processResult.stdout.toString()); }
2. 模拟终端环境
通过设置TERM环境变量,让brew判定输出目标为终端,从而保留完整格式:
import 'dart:io'; void main() async { var processResult = await Process.run( 'brew', ['outdated'], environment: {'TERM': 'xterm'}, ); print(processResult.stdout.toString()); }
验证
以上两种方法在Dart SDK 3.0.0-76.0.dev (macos_arm64)环境下均能生效,输出内容会包含类似gnutls (3.7.8) < 3.7.8_1的版本对比信息。
内容的提问来源于stack exchange,提问作者David Soroko
相关产品推荐
相关产品推荐

