use owo_colors::{OwoColorize, Stream};
pub fn success(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref()
.if_supports_color(Stream::Stdout, |t| t.green())
)
}
pub fn error(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref().if_supports_color(Stream::Stderr, |t| t.red())
)
}
pub fn warning(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref()
.if_supports_color(Stream::Stderr, |t| t.yellow())
)
}
pub fn info(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref()
.if_supports_color(Stream::Stderr, |t| t.cyan())
)
}
pub fn path(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref()
.if_supports_color(Stream::Stderr, |t| t.bright_cyan())
)
}
#[allow(dead_code)]
pub fn line_number(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref()
.if_supports_color(Stream::Stderr, |t| t.dimmed())
)
}
#[allow(dead_code)]
pub fn bold(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref()
.if_supports_color(Stream::Stdout, |t| t.bold())
)
}
#[allow(dead_code)]
pub fn snippet(text: impl AsRef<str>) -> String {
format!(
"{}",
text.as_ref()
.if_supports_color(Stream::Stderr, |t| t.dimmed())
)
}
pub fn set_override(enabled: bool) {
if !enabled {
owo_colors::set_override(false);
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_color_functions_dont_panic() {
let _ = success("test");
let _ = error("test");
let _ = warning("test");
let _ = info("test");
let _ = path("test");
let _ = line_number("test");
let _ = bold("test");
let _ = snippet("test");
}
#[test]
fn test_set_override() {
set_override(false);
let result = success("test");
assert_eq!(result, "test");
}
}