use ansi_term::Color::{Red, Yellow};
use std::io::Write;
#[allow(clippy::module_name_repetitions)]
pub struct ColorizedError<E>(E)
where
E: std::fmt::Debug;
impl<E> ColorizedError<E>
where
E: std::fmt::Debug,
{
#[allow(clippy::missing_const_for_fn)]
pub fn new(error: E) -> Self {
Self(error)
}
}
impl<E> std::fmt::Debug for ColorizedError<E>
where
E: std::fmt::Debug,
{
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(f, "\r{}: {:?}", Red.bold().paint("Error"), self.0)
}
}
pub type ColorizedResult<T> = Result<T, ColorizedError<anyhow::Error>>;
#[allow(clippy::expect_used)]
pub fn warn(opts: &crate::Dylint, message: &str) {
if !opts.quiet {
std::io::stderr()
.write_fmt(format_args!(
"{}: {}\n",
Yellow.bold().paint("Warning"),
message
))
.expect("Could not write to stderr");
}
}