winbrew_ui/
log.rs

1use super::{Ui, theme::styled_line};
2use console::Style;
3use std::fmt::Display;
4use std::io::Write;
5
6impl<W: Write> Ui<W> {
7    pub fn write_line(&mut self, message: impl Display) {
8        let _ = writeln!(self.out, "{message}");
9        let _ = self.out.flush();
10    }
11
12    pub fn info(&mut self, message: impl Display) {
13        let _ = writeln!(self.err, "{message}");
14    }
15
16    /// `notice` is reserved for neutral status messages; may gain distinct
17    /// formatting in future (e.g. dimmed). Prefer `info` for general output.
18    pub fn notice(&mut self, message: impl Display) {
19        let _ = writeln!(self.err, "{message}");
20    }
21
22    pub fn warn(&mut self, message: impl AsRef<str>) {
23        let line = styled_line(
24            self.color_enabled,
25            "⚠",
26            message.as_ref(),
27            Style::new().yellow(),
28        );
29        let _ = writeln!(self.err, "{line}");
30    }
31
32    pub fn error(&mut self, message: impl AsRef<str>) {
33        let line = styled_line(
34            self.color_enabled,
35            "✘",
36            message.as_ref(),
37            Style::new().red(),
38        );
39        let _ = writeln!(self.err, "{line}");
40    }
41
42    pub fn success(&mut self, message: impl AsRef<str>) {
43        let line = styled_line(
44            self.color_enabled,
45            "✓",
46            message.as_ref(),
47            Style::new().green(),
48        );
49        let _ = writeln!(self.err, "{line}");
50    }
51}