use crate::styles::{paint, DIM, WHITE};
const BAR: &str = "│";
const S_INFO: &str = "●";
const S_SUCCESS: &str = "◆";
const S_STEP: &str = "◇";
const S_WARN: &str = "▲";
const S_ERROR: &str = "■";
pub fn message(msg: impl AsRef<str>, symbol: &str) {
let s = msg.as_ref();
eprintln!("{}", paint(DIM, BAR));
let mut lines = s.lines();
if let Some(first) = lines.next() {
eprintln!("{} {}", symbol, paint(WHITE, first));
} else {
eprintln!("{}", symbol);
}
for line in lines {
if line.is_empty() {
eprintln!("{}", paint(DIM, BAR));
} else {
eprintln!("{} {}", paint(DIM, BAR), line);
}
}
}
pub fn info(msg: impl AsRef<str>) {
message(msg, &paint(super::settings::colors().accent, S_INFO));
}
pub fn success(msg: impl AsRef<str>) {
message(msg, &paint(super::settings::colors().success, S_SUCCESS));
}
pub fn step(msg: impl AsRef<str>) {
message(msg, &paint(super::settings::colors().success, S_STEP));
}
pub fn warn(msg: impl AsRef<str>) {
message(msg, &paint(super::settings::colors().error, S_WARN));
}
pub fn warning(msg: impl AsRef<str>) {
warn(msg);
}
pub fn error(msg: impl AsRef<str>) {
message(msg, &paint(super::settings::colors().cancel, S_ERROR));
}