fob_cli/ui/messages.rs
1//! Status message functions for terminal output.
2
3use owo_colors::OwoColorize;
4
5/// Print a success message to stderr.
6///
7/// # Arguments
8///
9/// * `message` - Message to display
10///
11/// # Examples
12///
13/// ```no_run
14/// use fob_cli::ui::success;
15///
16/// success("Build completed successfully");
17/// ```
18pub fn success(message: &str) {
19 eprintln!("{} {}", "✓".green().bold(), message);
20}
21
22/// Print an info message to stderr.
23///
24/// # Arguments
25///
26/// * `message` - Message to display
27///
28/// # Examples
29///
30/// ```no_run
31/// use fob_cli::ui::info;
32///
33/// info("Starting build process...");
34/// ```
35pub fn info(message: &str) {
36 eprintln!("{} {}", "ℹ".blue().bold(), message);
37}
38
39/// Print a warning message to stderr.
40///
41/// # Arguments
42///
43/// * `message` - Message to display
44///
45/// # Examples
46///
47/// ```no_run
48/// use fob_cli::ui::warning;
49///
50/// warning("No TypeScript files found for .d.ts generation");
51/// ```
52pub fn warning(message: &str) {
53 eprintln!("{} {}", "⚠".yellow().bold(), message.yellow());
54}
55
56/// Print an error message to stderr.
57///
58/// # Arguments
59///
60/// * `message` - Message to display
61///
62/// # Examples
63///
64/// ```no_run
65/// use fob_cli::ui::error;
66///
67/// error("Failed to read configuration file");
68/// ```
69pub fn error(message: &str) {
70 eprintln!("{} {}", "✗".red().bold(), message.red());
71}
72
73/// Print a debug message to stderr (only if RUST_LOG is set).
74///
75/// # Arguments
76///
77/// * `message` - Message to display
78///
79/// # Examples
80///
81/// ```no_run
82/// use fob_cli::ui::debug;
83///
84/// debug("Resolved module path: /path/to/module");
85/// ```
86pub fn debug(message: &str) {
87 if std::env::var("RUST_LOG").is_ok() {
88 eprintln!("{} {}", "◆".dimmed(), message.dimmed());
89 }
90}
91
92#[cfg(test)]
93mod tests {
94 use super::*;
95
96 #[test]
97 fn test_status_messages() {
98 // These should not panic
99 success("Success message");
100 info("Info message");
101 warning("Warning message");
102 error("Error message");
103 debug("Debug message");
104 }
105}