xmake-io / xmake

🔥 A cross-platform build utility based on Lua
https://xmake.io
Apache License 2.0
10.04k stars 785 forks source link

xmake在重定向到非终端时不应重复刷新当前行 #648

Closed codehz closed 4 years ago

codehz commented 4 years ago

描述问题

image 此处为在 Github Action 中运行,已知此时可以检测到标准输出文件不是终端

期待的结果

在标准输出不是终端的时候改变输出模式,避免出现重复显示同一行的行为

相关环境

OS: github-action提供的 Linux, macOS

其他信息

例子 https://github.com/codehz/ttp/runs/357863393

waruqi commented 4 years ago

你更新到dev试试 我处理过了

codehz commented 4 years ago

除此之外,还应该在输出为文件时禁用颜色。。不然在使用诸如less工具时(我知道less有选项可以避免,但是其他工具未必能避免)或者以文件方式查看的时候(其实主要就是有些设计不良的CI)也把颜色代码显示出来,就像这样 [[0m[[38;2;0;255;0m[ 0%]:[[0m [[0m[[0mcompiling.release src/main.c[[0m

OpportunityLiu commented 4 years ago

那个可以手动用主题搞定,虽然gcc和clang之类的都是自动探测决定,但是感觉这个并不是特别有必要,就xmake global --theme=plain 配置一下好了,省的现在越来越多支持良好的程序还需要用命令显式启用output color

waruqi commented 4 years ago

除此之外,还应该在输出为文件时禁用颜色。。不然在使用诸如less工具时(我知道less有选项可以避免,但是其他工具未必能避免)或者以文件方式查看的时候(其实主要就是有些设计不良的CI)也把颜色代码显示出来,就像这样 [[0m[[38;2;0;255;0m[ 0%]:[[0m [[0m[[0mcompiling.release src/main.c[[0m

最初我是对重定向禁用color codes的,不过后来做vscode插件时候 里面的终端输出色彩显示没了,似乎也用了重定向,所以有些地方还是会支持重定向里面的color codes,一刀切全禁用 也不是个办法,所以后来我又启用了。

目前是通过xmake g --theme=plain 或者设置COLORTERM=nocolor环境变量来禁用,如果只是针对特定命令禁用,可以 COLORTERM=nocolor xmake xxx > /tmp/xx