use clap::ValueEnum;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Default, ValueEnum)]
pub enum ColorArg {
#[default]
Auto,
Always,
Never,
}
impl ColorArg {
pub fn init(self) {
let use_color = match self {
ColorArg::Auto => {
if std::env::var("NO_COLOR").is_ok() {
false
} else {
atty::is(atty::Stream::Stdout)
}
}
ColorArg::Always => true,
ColorArg::Never => false,
};
colored::control::set_override(use_color);
}
}
pub fn init_color(color: ColorArg, no_color: bool) {
if no_color || std::env::var("NO_COLOR").is_ok() {
colored::control::set_override(false);
} else {
color.init();
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn color_arg_variants_exist() {
let _ = ColorArg::Auto;
let _ = ColorArg::Always;
let _ = ColorArg::Never;
}
}