4 个版本 (重大更新)
0.4.0 | 2022年10月30日 |
---|---|
0.3.0 | 2022年10月29日 |
0.2.0 | 2022年10月29日 |
0.1.0 | 2022年10月29日 |
在 命令行界面 中排名 #713
9KB
91 行
Color nope
颜色?不。不,不,不。
支持禁用终端颜色的标准选项。
为什么
不同的库以自己的方式做这件事,通常会访问全局状态(例如环境变量),有时假设输出总是发送到 stdout。
我希望得到什么
-
支持
NO_COLOR
。这似乎是一个合理的标准。
-
能够独立禁用 stdout 和 stderr 的颜色。
有时一个可能连接到 tty,而另一个可能被重定向到文件(例如)。
-
为了将访问全局状态(例如环境变量)仅限于我的应用程序(不在库中)。
我坚信,大部分情况下,库不应该触及全局状态。作为应用程序开发者,我应该能够决定我想使用哪些环境变量,并且应该能够将这些传递给库。
在这种情况下,如果我使用两个库来控制颜色,其中一个使用
NO_COLOR
,而另一个使用CLICOLOR
,那么除非我能重新控制,否则我会很无助。
示例
使用 from_env()
便利函数
use color_nope::{ColorNope, Stream};
let enable_color = ColorNope::from_env().enable_color_for(Stream::Stdout);
println!("{enable_color}");
或通过传递自己的值
use color_nope::{ColorNope, Stream, Force};
let enable_color = ColorNope::new(
std::env::var_os("TERM"),
std::env::var_os("NO_COLOR"),
if std::env::args_os().any(|a| a == "--no-color") {
Some(Force::Off)
} else {
None
},
)
.enable_color_for(Stream::Stdout);
println!("{enable_color}");
依赖项
~225KB